c# - 键盘上的返回键就像手机的返回键,如何区分它们?
问题描述
所以我正在 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;
}
但显然它对手机的“返回”按钮没有反应,但对键盘上的“返回”也没有反应。
任何想法如何解决这一问题?
解决方案
现在我通过在第一个if语句中添加下一个代码来解决它
if (myWebView != null && e.Flags != (Android.Views.KeyEventFlags.KeepTouchMode | Android.Views.KeyEventFlags.SoftKeyboard))
我仍然想知道这是否是解决我的问题的正确方法。
推荐阅读
- javascript - 当我尝试从我网站的其他页面访问它们时,如何从缓存中获取网页并恢复表单中的数据?
- laravel - 在 Laravel 6 中一次保存两个相互关联的新模型
- c# - 如何访问子控件的属性?
- sql - SQL 对值求和
- python - 如何在多个熊猫数据框中编码标签?
- reactjs - 在生产中管理 reactjs 应用程序中的路由
- ibm-cloud - 业务网络未在 IBM 云上升级
- android - Multipe Scope 不工作,使用 Microsoft Graph API SDK
- regex - 有没有办法在日期验证中输出“/”
- java - 如何在pojo中使用jpa或hibernate映射json字段?