首页 > 解决方案 > 键盘上的返回键就像手机的返回键,如何区分它们?

问题描述

所以我正在 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;
}

但显然它对手机的“返回”按钮没有反应,但对键盘上的“返回”也没有反应。

任何想法如何解决这一问题?

标签: c#androidxamarin

解决方案


现在我通过在第一个if语句中添加下一个代码来解决它

if (myWebView != null && e.Flags != (Android.Views.KeyEventFlags.KeepTouchMode | Android.Views.KeyEventFlags.SoftKeyboard))

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


推荐阅读