我想在我的应用中实现导航模式(Navigation Pattern),并在ActionBar中加入返回按钮。
我有一个详细信息(Details)页面,在该页面中,我可以从主屏幕、收藏夹和搜索页面进入。同时,我也可以通过处理特定的URL从浏览器中打开此页面。当用户按下返回按钮时,我使用flush()方法来模拟后退导航。但是对于当用户是从浏览器进入该页面时,我希望打开主屏幕而不是之前的浏览器活动。我如何识别之前的活动是来自另一个应用程序,并导航到主屏幕?
我想在我的应用中实现导航模式(Navigation Pattern),并在ActionBar中加入返回按钮。
我有一个详细信息(Details)页面,在该页面中,我可以从主屏幕、收藏夹和搜索页面进入。同时,我也可以通过处理特定的URL从浏览器中打开此页面。当用户按下返回按钮时,我使用flush()方法来模拟后退导航。但是对于当用户是从浏览器进入该页面时,我希望打开主屏幕而不是之前的浏览器活动。我如何识别之前的活动是来自另一个应用程序,并导航到主屏幕?
向上导航应始终指向活动的分层父级,返回应始终导航到过去的位置。
换句话说,你应该保留返回键不变。
至于向上导航,它应该始终导航到相同的位置,无论它来自何处。因此,如果您通常从YourListActivity进入DetailsActivity,则向上导航应始终返回那里,无论您来自何处。最可能的位置取决于您的判断,但它应始终相同。
如果您从非正常位置(例如浏览器、另一个活动、小部件或通知)进入详细信息活动,则应重新创建任务堆栈,以便使用向上导航进行导航会产生相同的路径。以下是来自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。