1

我正在使用此处发布的此方法在 ActionBar 中实现向上按钮:

ActionBar 向上按钮和导航模式

它工作正常,除了在一种情况下:如果活动 A 创建活动 B,然后我按向上,它将导航到 A 没问题。

但是,当我进入活动 B,然后我切换到另一个应用程序,然后切换回我的应用程序,现在我按下向上按钮,它将导航到主屏幕而不是活动 A。

当我调试时,我可以看到 NavUtils.shouldUpRecreateTask(this, upIntent) 在两种情况下都返回 false,并且 upIntent 确实是两种情况下的 Activity A。所以不确定是什么问题。

@SuppressLint("NewApi")
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int itemId = item.getItemId();
    if (itemId == android.R.id.home) {
        Intent upIntent = NavUtils.getParentActivityIntent(this);
        if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
            // This activity is NOT part of this app's task, so create a new task
            // when navigating up, with a synthesized back stack.
            TaskStackBuilder.create(this)
                    // Add all of this activity's parents to the back stack
                    .addNextIntentWithParentStack(upIntent)
                    // Navigate up to the closest parent
                    .startActivities();
        } else {
            // This activity is part of this app's task, so simply
            // navigate up to the logical parent activity.
            NavUtils.navigateUpTo(this, upIntent);
        }
        //finish();
        return true;
    } else if (itemId == R.id.wrap_menu_item) {
        wrapText();
        invalidateOptionsMenu();
        return true;
    } else {
        return super.onOptionsItemSelected(item);
    }
}
4

1 回答 1

1

将活动 A 属性从

android:launchMode="singleInstance"

android:launchMode="singleTask"

解决了这个问题。有意义,因为“单一实例”活动不允许其他活动成为其任务的一部分。这是任务中的唯一活动。如果它启动另一个活动,则该活动将分配给不同的任务。所以 Up 之前工作的唯一原因是因为 Activity A 在之前的活动“之下”:它给人一种它正在回到之前的活动的错觉。

于 2013-06-03T18:51:17.793 回答