后退按钮不会转到活动堆栈上的上一个活动

时间:2013-11-07 15:39:14

标签: android mono xamarin.android

我有一个带有列表视图的活动,在我的OnListItemClick中,我正在执行以下操作:

var intent = new Intent(this, typeof(WebViewContent));
intent.AddFlags (ActivityFlags.NewTask);
intent.PutExtra ("ITEM_ID", t.ItemID.ToString());
intent.PutExtra ("ITEM_LINK", t.ItemLink.ToString());
intent.PutExtra ("ITEM_TYPE", t.ItemType.ToString());
StartActivity(intent);

在新活动中,WebViewContent Activity我这样做:webView.SetWebViewClient(new AwesomeWebClient(this.dofinish));  在doFinish中,我开始了另一项活动:

var intent = new Intent(this, typeof(WebViewContent));
intent.AddFlags (ActivityFlags.NewTask);
intent.PutExtra ("ITEM_ID", "7419");
intent.PutExtra ("ITEM_LINK", "");
intent.PutExtra ("ITEM_TYPE", "content");
StartActivity(intent);

但是当我按下后退按钮时,我不会回到之前的活动,我会一直回到最初开始的活动。

我以为每次我开始一个新活动时它都存储在活动堆栈中,后退按钮总是转到堆栈上的前一个。

有人可以帮助我理解为什么后退按钮没有做我期待的事情吗?

1 个答案:

答案 0 :(得分:1)

根据文档,您使用的是NewTask标志:

<强> FLAG_ACTIVITY_NEW_TASK

  

如果设置,此活动将成为此任务的新任务的开始   历史堆栈。任务(从启动它到下一个的活动   任务活动)定义用户可以进行的活动的原子组   搬去。任务可以移动到前台和后台;所有的   特定任务内部的活动始终保持不变   订购。有关任务的详细信息,请参阅任务和后台堆栈。

     

此标志通常由想要呈现的活动使用   “启动器”样式行为:它们为用户提供单独的列表   可以完成的事情,否则完全独立运行   启动它们的活动。

     

使用此标志时,如果某个任务已在运行该活动   你现在开始,然后一个新的活动将不会开始;   相反,当前的任务将被简单地带到前面   屏幕显示它的最后状态。请参阅FLAG_ACTIVITY_MULTIPLE_TASK   用于禁用此行为的标志。