如何使Xamarin.Android应用程序退出,当两次点击后退按钮(包括点击之间的确认消息)?
在我的MainActivity,我推翻这样的如何使Xamarin.Android应用程序退出,当两次点击后退按钮(包括点击之间的确认消息)?
public override void OnBackPressed() {
Toast toast = Toast.MakeText(this, "Press again to exit", ToastLength.Short);
toast.SetMargin(0,0.20f);
toast.Show();
}
的OnBackPressed()方法,当用户在MainActivity并单击后退按钮一次,屏幕上的“再次按下此键退出”出现的消息此消息消失几秒钟后。如果用户在屏幕上显示此消息时再次单击后退按钮,我希望应用程序退出,但当消息消失且用户单击后退按钮时,我希望消息再次出现。我已经看到了一些用Java实现的例子,但是我发现很难将这些例子用于Xamarin.Android。
回答:
此代码正常工作。
long lastPress; public override void OnBackPressed()
{
// source https://stackoverflow.com/a/27124904/3814729
long currentTime = DateTime.UtcNow.Ticks/TimeSpan.TicksPerMillisecond;
// source https://stackoverflow.com/a/14006485/3814729
if (currentTime - lastPress > 5000)
{
Toast.MakeText(this, "Press back again to exit", ToastLength.Long).Show();
lastPress = currentTime;
}
else
{
base.OnBackPressed();
}
}
如果您想使用短吐司长度,请更改时间。
ToastLength.Long = 3500(毫秒)
ToastLength.Short = 2000(毫秒)
回答:
Toast toast = Toast.MakeText(Application.Context, "Press again to exit", ToastLength.Short); bool doubleBackToExitPressedOnce = false;
public override void OnBackPressed()
{
if (doubleBackToExitPressedOnce)
{
toast.Cancel();
base.OnBackPressed();
return;
}
toast.SetMargin(0, 0.20f);
toast.Show();
this.doubleBackToExitPressedOnce = true;
new Handler().PostDelayed(() =>
{
doubleBackToExitPressedOnce = false;
}, 2000);
}
回答:
最可靠的方法,我建议是这样的:
public static bool doubleBackToExitPressedOnce=true public override void OnBackPressed()
{
if (doubleBackToExitPressedOnce)
{
FinishAffinity();
}
Common.FragmentManager.doubleBackToExitPressedOnce = true;
Toast.MakeText(this, Resources.GetString(Resource.String.back_click_on_home), ToastLength.Short).Show();
new Handler().PostDelayed(new RunnableHelper(), 2000);
}
public class RunnableHelper : Java.Lang.Object, IRunnable
{
public void Run()
{
doubleBackToExitPressedOnce = false;
}
}
以上是 如何使Xamarin.Android应用程序退出,当两次点击后退按钮(包括点击之间的确认消息)? 的全部内容, 来源链接: utcz.com/qa/262344.html