我想实现导航模式 ,我在动作条上按钮的应用程序。
我有详细的活动,在这里我可以从家庭,收藏夹和搜索屏幕。 此外,我可以从浏览器中打开该屏幕(处理特定URL)。 当用户按下向上按钮,我使用flush()方法,来模拟后退导航。 但是,对于情况下,当用户从浏览器来了,我想打开主屏幕,而不是以前的浏览器的活动。 我怎么能认识到,以前的活动是从其他应用程序,并导航到主屏幕?
我想实现导航模式 ,我在动作条上按钮的应用程序。
我有详细的活动,在这里我可以从家庭,收藏夹和搜索屏幕。 此外,我可以从浏览器中打开该屏幕(处理特定URL)。 当用户按下向上按钮,我使用flush()方法,来模拟后退导航。 但是,对于情况下,当用户从浏览器来了,我想打开主屏幕,而不是以前的浏览器的活动。 我怎么能认识到,以前的活动是从其他应用程序,并导航到主屏幕?
行动应随时浏览活动的层次父母和回应该总是在时间导航。
换句话说,你应该请假回原样。
至于向上,它应该总是去同一个地方,无论它来自何处。 所以,如果你平时前来DetailsActivity从YourListActivity,最多应该总是去那里,无论你来自哪里。 什么是最有可能的去处就是到你的自由裁量权,但它应该始终是相同的。
如果从非正常位置来到详细活动(如浏览器,另一项活动,窗口小部件,或通知)你这么导航在同一路径使用了结果,需要重新创建任务的堆栈。 下面是从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支持库。