ActionBar向上按钮和导航模式

bar*_*ian 12 android actionbarsherlock android-actionbar

我想在我的应用程序中使用ActionBar中的向上按钮实现导航模式.

我有详细活动,这里我可以来自家里,收藏夹和搜索屏幕.此外,我可以从浏览器打开此屏幕(处理特定的URL).当用户按下向上按钮时,我使用flush()方法来模拟后退导航.但是对于案例,当用户来自浏览器时,我想打开主屏幕而不是之前的浏览器活动.我如何识别,以前的活动是来自另一个应用程序,并导航到主屏幕?

Jos*_*nak 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是关于实施导航的Android培训

(http://developer.android.com/training/implementing-navigation/index.html).

您将需要NavUtils和TaskStackBuilder的支持库.

  • 使用此方法时,父活动会丢失所有额外的状态和状态.你有没有恢复状态? (8认同)
  • 根据指南(http://developer.android.com/design/patterns/navigation.html),当通知将您置于应用程序的深处时,后面不应暂时导航.请参阅gmail或日历示例. (2认同)