键盘上的后退按钮就像电话的后退键一样,如何区分它们?

时间:2018-10-07 12:38:47

标签: c# android xamarin

所以我正在Xamarin Android上编写我的第一个小型应用程序。我注意到我的应用有时有时会突然关闭,当我按住键盘上的后退按钮以删除文本字段中的文本时,我发现它正在关闭。

我有此代码,该代码应两次按“后退”按钮退出应用程序:

bool doubleBackToExitPressedOnce = false;
public override bool OnKeyDown([GeneratedEnum] Keycode keyCode, KeyEvent e)
{
    if (myWebView != null)
    {
        if (keyCode == Keycode.Back && myWebView.CanGoBack())
        {
            myWebView.GoBack();
            return true;
        }
        else
        {
            if (doubleBackToExitPressedOnce)
            {
                base.OnBackPressed();
                Java.Lang.JavaSystem.Exit(0);
                return false;
            }

            doubleBackToExitPressedOnce = true;
            Toast.MakeText(this, "Press back again to exit app", ToastLength.Short).Show();

            new Handler().PostDelayed(() => {
                doubleBackToExitPressedOnce = false;
            }, 1000);
        }
    }

    return false;
}

但是显然,它对手机的“后退”按钮没有反应,但对键盘上的“后退”按钮没有反应。

有什么办法解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

目前,我通过在第一条 if 语句

中添加下一个代码来解决该问题
if (myWebView != null && e.Flags != (Android.Views.KeyEventFlags.KeepTouchMode | Android.Views.KeyEventFlags.SoftKeyboard))

我仍然想知道这是否是解决我问题的正确方法。