PDA

View Full Version : غیرفعال کردن دکمه بعد از کلیک به صورت بی درنگ



omid.n1990
چهارشنبه 26 شهریور 1393, 01:59 صبح
سلام، یک دکمه دارم که بعد از کلیک کردن نباید امکان کلیک مجدد داشته باشه تا وقتی دستورات درونش کامل اجرا بشه. واسه اینکار در رویداد کلیک دکمه و در اولین خط، خاصیت enable دکمه رو false کردم، تو گوشی و تبلت تقریبا مشکل خاصی ندارم ولی تو شبیه ساز به دلیل کندی زیاد میتونم دو سه بار سریع کلیک کنم و دکمه سه بار اجرا بشه! گفتم شاید در خروجی نهایی هم این مشکل پیش بیاد و تو برخی خروجی ها اینطور بشه.
به جز استفاده از خاصیت enable آیا روش سریعتری برای غیرفعال کردن دکمه، یا کدهای درون اون وجود نداره؟ کلاسی مثل Lock زبانهای دیگه نداریم؟

Amin-rz
چهارشنبه 26 شهریور 1393, 09:34 صبح
اول يه متغير تو اكتيويتي تعريف كن;

final int i = 0 ;

بعد تو رويداد دكمه اينطوري بنويس:

if(i==0)
{
i=1;


//دستورات دكمه در اينجا


i=0;
}

dasssnj
چهارشنبه 26 شهریور 1393, 10:09 صبح
اول يه متغير تو اكتيويتي تعريف كن;

final int i = 0 ;

بعد تو رويداد دكمه اينطوري بنويس:

if(i==0)
{
i=1;


//دستورات دكمه در اينجا


i=0;
}



شما متغیر را final تعریف کردی بعد داری مقدارشو عوض می کنی ؟

این کد اشتباهه به نظرم از این استفاده کنید.

این تعریف متغیر :

boolean isFirst = true ;


اینم توی onClick بنویسید :

if(isFirst)
{



//دستورات دكمه در اينجا


isFirst = false;
}

omid.n1990
چهارشنبه 26 شهریور 1393, 10:36 صبح
نه خوب، اینکار رو تست هم کرده بودم، سرعت if از سرعت enable کردن سریعتر نیست. تو گوشی مشکلی ندارم ولی تو شبیه ساز وقتی خیلی کند میشه میتونم سریع چندبار کلیک کنم که دوسه بارش رو میگیره و اصلا قبل اینکه خط اول بخواد اجرا بشه فرمان ارسال میشه!!! قبلا برام همچین اتفاقی نیفتاده بود یا خیلی دقت نکرده بودم. ولی ما یک کد داریم تو زبانهای دیگه به اسم lock خواستم بدونم کسی میدونه تو اندروید چیه؟ که کلا اون قطعه کد رو قفل میکنه و امکان نداره یک قطعه کد همزمان اجرا بشه. بعد میگردم ببینم چطور میشه.
تشکر