【问题标题】:ActionBar Up button and Navigation patternActionBar 向上按钮和导航模式
【发布时间】:2012-05-25 11:01:40
【问题描述】:

我想在我的应用中实现Navigation Pattern,并在 ActionBar 中使用向上按钮。

我有详细信息活动,在这里我可以从家、收藏夹和搜索屏幕来。我也可以从浏览器打开这个屏幕(处理特定的 url)。当用户按下向上按钮时,我使用 flush() 方法来模拟返回导航。但是对于情况,当用户来自浏览器时,我想打开主屏幕而不是以前的浏览器活动。我如何识别之前的活动来自另一个应用程序,并导航到主屏幕?

【问题讨论】:

    标签: android android-actionbar actionbarsherlock


    【解决方案1】:

    Up 应始终导航到 Activity 的层次父级,Back 应始终暂时导航。

    换句话说,您应该保持原样返回。

    至于Up,不管它来自哪里,它应该总是去同一个地方。因此,如果您通常从 YourListActivity 来到 DetailsActivity,那么无论您来自哪里,Up 都应该始终去那里。最可能的位置取决于您的判断,但它应该始终相同。

    如果您从非正常位置(例如浏览器、另一个 Activity、小部件或通知)进入 Details Activity,您应该重新创建任务堆栈,以便使用向上导航导致相同的路径。以下是 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 的支持库。

    【讨论】:

    • 当使用这个方法时,父activity会丢失所有的extras和state。你有没有恢复它的状态?
    • 根据指南 (developer.android.com/design/patterns/navigation.html),当通知将您置于应用程序深处时,不应暂时导航返回。请参阅 gmail 或日历示例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多