我有一个带有列表视图的活动,在我的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);
但是当我按下后退按钮时,我不会回到之前的活动,我会一直回到最初开始的活动。
我以为每次我开始一个新活动时它都存储在活动堆栈中,后退按钮总是转到堆栈上的前一个。
有人可以帮助我理解为什么后退按钮没有做我期待的事情吗?
答案 0 :(得分:1)
根据文档,您使用的是NewTask标志:
<强> FLAG_ACTIVITY_NEW_TASK 强>
如果设置,此活动将成为此任务的新任务的开始 历史堆栈。任务(从启动它到下一个的活动 任务活动)定义用户可以进行的活动的原子组 搬去。任务可以移动到前台和后台;所有的 特定任务内部的活动始终保持不变 订购。有关任务的详细信息,请参阅任务和后台堆栈。
此标志通常由想要呈现的活动使用 “启动器”样式行为:它们为用户提供单独的列表 可以完成的事情,否则完全独立运行 启动它们的活动。
使用此标志时,如果某个任务已在运行该活动 你现在开始,然后一个新的活动将不会开始; 相反,当前的任务将被简单地带到前面 屏幕显示它的最后状态。请参阅FLAG_ACTIVITY_MULTIPLE_TASK 用于禁用此行为的标志。