将后退按钮导航到另一个活动Xamarin C#

时间:2016-03-10 20:46:36

标签: c# android visual-studio xamarin

所以我试着让后退按钮从另一个活动导航(从我们想要activity1,activity2,activity3导航到mainActivity(级别选择)),因为此刻它只导航回自身然后关闭这样的应用程序 enter image description here

我尝试将“NoHistory = true”添加到[Activity(Label = "firstQ", NoHistory =true)]
但是根本没有做任何事情,对于什么能解决这个问题有任何想法?

1 个答案:

答案 0 :(得分:2)

NoHistory=true属性标志实际上用于操作栏上的“向上”按钮。请参阅此处获取more信息。

您要做的是覆盖后退按钮的行为。你在这里可以做的就是

Activitiy1:

public override void OnBackPressed()
{
    var intent = new Intent(this, typeof(MainActivity));
    StartActivity(intent);

    //base.OnBackPressed(); -> DO NOT CALL THIS LINE OR WILL NAVIGATE BACK
}

只要在前台活动上按下后退按钮,就会触发此方法。通过注释(或不调用)base.OnBackPressed();将阻止活动返回,您可以开始新的活动,即MainActivity

现在,如果您的层次结构实际上与您说的MainActivity基本上是您的root活动不同,并且您按顺序启动其他人,按下后退按钮会返回主活动采取类似的方法,但需要一些额外的标志。对于此实例,您可能对FLAG_ACTIVITY_CLEAR_TOP或Xamarin条款ActivityFlags.ClearTop

感兴趣
  

如果设置,则正在启动的活动已在运行中   当前任务,然后而不是启动它的新实例   活动,其上的所有其他活动将被关闭   这个意图将作为一个传递到(现在在顶部)旧活动   新的意图。

     

例如,考虑一个由活动组成的任务:A,B,C,D。   如果D调用带有解析为的Intent的startActivity()   活动B的组成部分,然后C和D将完成,B接收   给定的Intent,导致堆栈现在为:A,B。

现在,实现与添加的意图标志几乎相同。

public override void OnBackPressed()
{
    var intent = new Intent(this, typeof(MainActivity));
    intent.AddFlags(ActivityFlags.ClearTop);
    StartActivity(intent);
    //base.OnBackPressed(); -> DO NOT CALL THIS LINE OR WILL NAVIGATE BACK
}