我正在使用Xamarin构建应用程序,它是适用于Android的Android Player。每当我点击后退按钮时,它似乎完全退出了应用程序。我希望能够更改此默认设置以返回到我的应用中的上一页。如何覆盖后退按钮的行为?
答案 0 :(得分:2)
所以前面的答案是正确的,你可以捕获硬件后退按钮并随意做任何事情。但我想确保你理解为什么会这样。 Android为您处理硬件后退按钮,大多数时候,让Android处理它会起作用,它知道该怎么做。
但是在你的情况下,你根本就没有导航。您的单击处理程序正在删除一个布局文件并将其替换为另一个。这相当于在Web开发中显示/隐藏div。你实际上并没有改变屏幕(页面)。
因此,当你点击后退按钮时,你仍然在应用程序的第一个(也是唯一的)屏幕上,因此操作系统会做它唯一知道要做的事情,它会关闭应用程序。
如果你想继续使用显示/隐藏布局代替实际导航的范例,我会陷入硬件后退按钮并重新交换你的布局文件。
public override bool OnKeyDown(Keycode keyCode, KeyEvent e)
{
if (keyCode == Keycode.Back) {
SetContentView(Resource.Layout.Login)
return false;
}
return true;
}
但我推荐的真正解决方案是阅读如何在Xamarin Android中真正导航。
。交换布局文件并将整个应用程序的所有逻辑放在一个Activity中将非常困难。答案 1 :(得分:0)
你可以在OnBackPressed()事件中处理它。
答案 2 :(得分:0)
您可以捕获OnKeyDown
并决定是否允许“后退”按钮连接事件链:
public override bool OnKeyDown(Keycode keyCode, KeyEvent e)
{
if (keyCode == Keycode.Back) {
Toast.MakeText (this, "Back button blocked", ToastLength.Short).Show ();
return false;
}
Toast.MakeText (this, "Button press allowed", ToastLength.Short).Show ();
return true;
}