我想在我的应用中使用ActionBar中的向上按钮实现Navigation Pattern。
我有详细活动,这里我可以来自家里,收藏夹和搜索屏幕。此外,我可以从浏览器打开此屏幕(处理特定的URL)。当用户按下向上按钮时,我使用flush()方法来模拟后退导航。但是对于案例,当用户来自浏览器时,我想打开主屏幕而不是之前的浏览器活动。我怎么能识别出,之前的活动来自另一个应用程序,并导航到主屏幕?
答案 0 :(得分:20)
Up应始终导航到活动的分层父级,而Back应始终导航到时间。
换句话说,你应该保持原样。
至于Up,它应该总是去同一个地方,无论它来自哪里。因此,如果您通常从YourListActivity转到DetailsActivity,无论您来自何处,Up都应该随时到达。什么是最可能的地方取决于你自己的判断,但它应该始终是相同的。
如果从非正常位置(例如浏览器,其他活动,窗口小部件或通知)进入详细信息活动,则应重新创建任务堆栈,以便使用向上导航生成相同的路径。以下是Android开发人员培训的一个示例:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Intent upIntent = new Intent(this, YourListActivity.class);
if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
// This activity is not part of the application's task, so
// create a new task
// with a synthesized back stack.
TaskStackBuilder
.from(this)
.addNextIntent(new Intent(this, HomeActivity.class))
.addNextIntent(upIntent).startActivities();
finish();
} else {
// This activity is part of the application's task, so simply
// navigate up to the hierarchical parent activity.
NavUtils.navigateUpTo(this, upIntent);
}
return true;
}
}
以下是有关实施导航的Android培训
(http://developer.android.com/training/implementing-navigation/index.html)。
您需要NavUtils和TaskStackBuilder的支持库。