如何使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

回到顶部