0

我有一个带有列表视图的活动,在我的 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);

但是当我点击后退按钮时,我没有回到上一个活动,我一直回到第一次开始的活动。

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

有人可以帮我理解为什么后退按钮没有达到我的预期吗?

4

1 回答 1

1

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

FLAG_ACTIVITY_NEW_TASK

如果设置,此活动将成为此历史堆栈上新任务的开始。任务(从启动它的活动到下一个任务活动)定义了用户可以移动到的活动的原子组。任务可以移到前台和后台;特定任务中的所有活动始终保持相同的顺序。有关任务的更多信息,请参阅任务和返回堆栈。

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

使用此标志时,如果您现在正在启动的 Activity 已经在运行任务,则不会启动新的 Activity;相反,当前任务将简单地以其上次所处的状态被带到屏幕的前面。有关禁用此行为的标志,请参见 FLAG_ACTIVITY_MULTIPLE_TASK。

于 2013-11-07T15:45:57.517 回答