覆盖xamarin android应用程序上的后退按钮

时间:2016-03-01 16:03:15

标签: android .net xamarin

我正在使用Xamarin构建应用程序,它是适用于Android的Android Player。每当我点击后退按钮时,它似乎完全退出了应用程序。我希望能够更改此默认设置以返回到我的应用中的上一页。如何覆盖后退按钮的行为?

3 个答案:

答案 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;
}