رفتن به مطلب

جلوگیری و اطمینان از گذینه برگشت(Back) با استفاده از رویداد KeyPress


مهدی ایزدی

ارسال‌های توصیه شده

سلام دوستان

حتما تا حالا براتون پیش اومده که با برنامه ای خاص کار کردید و موقعی که اومدید از گذینه برگشت استفاده کنید به شما پیغام داده شده

که یک بار دیگه هم این گذینه رو تکرار کنید . مثلا اگر در فاصله زمانی 3 یا 4 ثانیه دوبار گذینه برگشت و بزنید گذینه برگشت اجرا بشه.

خب شروع میکنیم:

در Sub Globals :

Dim i As Boolean
Dim timer1 As Timer
Dim sec As Int

در Activity Create هم Timer رو Initialize میکنیم با سرعت 1000 اینترول که میشه همون 1 ثانیه !

timer1.Initialize("timer1",1000)

خب حالا باید رویداد Activity_KeyPress رو تعریف کنیم "

Sub Activity_KeyPress (KeyCode As Int) As Boolean
  If KeyCode = KeyCodes.KEYCODE_BACK Then
      If i = False Then
  timer1.Enabled = True
         ToastMessageShow("Click Again For Exit",False)
        i = True
          Return True
     Else
          Return False
     End If
  Else
         Return False
  End If
End Sub

این هم مربوط میشه به کدهای تایمر:

Sub timer1_tick
If sec <= 3 Then
sec = sec+1
Else
i = False
timer1.Enabled = False
End If
End Sub

خب توی کد نویسی های بالا ما شرط گذاشتم که اگه کلید برگشت زده شد یک مسیج برای ما نشون داده بشه که دوباره کلید برگشت رو بزنیم

برای این کار تایمبر به کار میفته که ما 3 ثانیه وقت داریم.

با استفاده است از Int هم که با اسم Sec تعریف کردیم ثانیه ها رو میشماریم.

مهران هی گیر میداد زودتر تاپیک رو بدم نشد زیاد توضیح بدم *wall* خودش بیاد توضیح کامل ترش رو بده *DntKnow*

لینک ارسال
به اشتراک گذاری در سایت های دیگر

عرض ادب و سلام به دوستان گلم.

از دوست خوبم مهدی ایزدی گل هم تقاضای ببخشش که مزاهم شدم

Sub Activity_KeyPress (KeyCode As Int) As Boolean 
 If KeyCode = KeyCodes.KEYCODE_BACK Then
  Activity.Finish
  StartActivity(Main)
 End If
 If KeyCode = KeyCodes.KEYCODE_MENU Then
  Activity.OpenMenu
 End If
End Sub

خوب اینم یه نمونه از کد Back

این کد موقعی مورد استفاده قرار میگیره که وقتی تو یه صفحه

هستی وبرای برگشت به صفحه اصلی میتونید از این کد استفاده کنید.

....اگه درست نیست دوستان درستش کنن.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 5 ماه بعد...

دوستان چطوری باید از همه این کدها استفاده کرد ؟

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

و هر جا دکمه منو رو زدن منو باز بشه ؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

کد رو توی رویداد KeyPress مربوط به هر اکتیویتی بنویسید همین

لینک ارسال
به اشتراک گذاری در سایت های دیگر

کد رو توی رویداد KeyPress مربوط به هر اکتیویتی بنویسید همین

وقتی این کار رو می کنم <code><code>KeyCode قرمز می شه !!!</code></code>

لینک ارسال
به اشتراک گذاری در سایت های دیگر

وقتی این کار رو می کنم <code><code>KeyCode قرمز می شه !!!</code></code>

کل کد مربوط به تنظیمات KeyPress رو قرار بدید.

اگه شما KeyCode As Int رو توی Sub تعریف کرده باشید نباید خطا بده

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 1 ماه بعد...

من از کدهای بالا استفاده کردم که وقتی Back رو میزنم برنگرده به صفحه قبل ولی کار نمیکنه

ظاهراً Return False که مینویسیم دیگه نباید خارج بشه ولی بازم خارج میشه !!!

لینک ارسال
به اشتراک گذاری در سایت های دیگر

Sub Activity_KeyPress(KeyCode As Int) As Boolean

If KeyCode = KeyCodes.KEYCODE_BACK Then

If X=0 Then Then

Return False

Else

Return True

End If

End If

End Sub

آقا نیما این کد من ولی وقتی X=0 هم باشه یا نباشه از صفحه خارج میشه و به صفحه قبلی میره

من فکر میکنم خارج نمیشه

در واقع فوکوس رو از دست میده

چه کنم ؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 5 ماه بعد...

با عرض سلام خدمت دوستان؛ به نظر من استفاده از تایمر کار بیهوده ایه  و راه حل ساده تری وجود داره؛

 

شما فقط کافیه هر بار که دکمه back فشار داده میشه تایم فعلی سیستم درو توی یه متغیر بریزید و مدام با یه افست جمع کنید و عمل مقایسه رو انجام بدید

 

به این صورت که:

 

1- در Sub Process_Globals :

Dim back_pressed As Long:back_pressed=0
Dim ExitTimeOffset as int:ExitTimeOffset=3000 '3 ثانیه

2-

Sub Activity_KeyPress (KeyCode As Int) As Boolean
        If KeyCode = 4 Then
		If back_pressed+ExitTimeOffset > DateTime.Now Then 
			Return False
		Else
			ToastMessageShow("برای خروج یک بار دیگر دکمه باز گشت را فشار دهید!",False)
			back_pressed = DateTime.Now
			Return True
		End If
	End If
	Return False
End Sub

به همین راحتی؛ دیگه احتیاجی به تایمر نخواهید داشت

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 1 ماه بعد...

]دوستان  این روش خیلی موقع ها عملی نیست
بهتون پیش نهاد میکنم از این روشی که یکی از دوستامون تو همین انجمن گذاشتن استفاده کنید صد در صد عملیه و در تمام مواقع کار میکنه

 

 

http://[twitter][/twitter

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...