PDA

View Full Version : زمان محدود برای کلیک



A.iman
سه شنبه 19 آذر 1392, 17:43 عصر
سلام دوستان ؛
من میخاستم تو برنامه ام یه قسمتب باشه تا وقتی کاربر وارد او اکتیویتی میشه ، یه مدت زمان محدودی برای کلسک کردن داشته باشه ، بعد با یه دیالوگ ازش پرسیده بشه که ادامه میده یا نه ؟میخاستم یه راهنمایی به من بکنین که چطور میتونم این کارو انجام بدم ؟

rubiks.kde
سه شنبه 19 آذر 1392, 18:49 عصر
با رفتن به اون اکتیوتی یه تایمر فعال کنید و در تابع کلیک اون رو غیر فعال کنید.حالا زمانی که میرید داخل اکتیویتی تایمر شروع میشه و اگه قبل از رسیدن به زمان مخصوص کلیک بشه ، که هیچ والا پیام رو نمایش میده.

با handler به راحتی میتونید این کار رو انجام بدید

reza_azizi2010
سه شنبه 19 آذر 1392, 19:14 عصر
Handler handler=new Handler();
handler.postDelayed(new Runnable() {

@Override
public void run() {
//نمایش پیغام مورد نظر بعد از زمان سپری شده
}
}, 1000);
عدد 1000 زمانیه که باید سپری بشه که شما میتونید تغییرش بدین، به میلی ثانیه هستش
اگه کاربر کلیک کرد که کاری که میخاین انجام میشه در غیر اینصورت دستورات handler اجرا میشه

A.iman
سه شنبه 19 آذر 1392, 19:34 عصر
همونطور که گفتین من میخام با وارد شدن به اکتیویتی تایمر شروع بشه ....
ولی وقتی کلیک بشه یه دیالوگ رو نشون بده .... این handlr هم که گفتین ، نمیدونم چیه!میشه یه نمونه کد شبیه این کار برام بزارین ؟خیلی ممنون ،،،،

abbasalim
سه شنبه 19 آذر 1392, 19:57 عصر
اون 1000 به میلی ثانیه هست شما ببین چند دقیقه میخوای صبر کنه بعد اجرا بشه مقدارش رو به میلی ثانیه حساب کن بزار بجاش

reza_azizi2010
سه شنبه 19 آذر 1392, 20:52 عصر
همونطور که گفتین من میخام با وارد شدن به اکتیویتی تایمر شروع بشه ....
ولی وقتی کلیک بشه یه دیالوگ رو نشون بده .... این handlr هم که گفتین ، نمیدونم چیه!میشه یه نمونه کد شبیه این کار برام بزارین ؟خیلی ممنون ،،،،

شما همین کد رو کپی کن
این کد همون میزان زمانی که براش تعریف کردی صبر میکنه، بعدش کدهای داخلش رو اجرا میکنه. خب شما میخای بعد مثلا 10 ثانیه یه پیغام ظاهر شه، همون خط نمایش پیغام رو بذار توی handler دیگه
و اگه کاربر روی قسمتی که شما مورد نظرته کلیک کرد، میتونی بری به یه اکتیویتی دیگه و این handler هم دیکه فعال نمیشه

A.iman
سه شنبه 19 آذر 1392, 21:32 عصر
ببخشید یه سوال دیگه !
من اگه بخوام همین اکتیویتی یه بار دیگه اجرا بشه چیکار باید بکنم ؟

reza_azizi2010
سه شنبه 19 آذر 1392, 21:39 عصر
ببخشید یه سوال دیگه !
من اگه بخوام همین اکتیویتی یه بار دیگه اجرا بشه چیکار باید بکنم ؟

میتونی یه flag (از نوع متغییر بولین) ایجاد کنی. وقتی کاربر کلیک کرد مثلا متغییر false بشه بعدش توی handler این flag رو بررسی کنه که اگه false نبود دستورات رو اجرا کنه و اگه false بود یعنی کاربر کلیک کرده و دیگه اون دستورات تایمر رو اجرا نکنه. اینجوری نیازی نیست بری یه یه اکتیویتی دیگه.