gpt4 book ai didi

android - 实现 ActionBar 向上按钮

转载 作者:行者123 更新时间:2023-11-30 03:34:12 29 4
gpt4 key购买 nike

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

ActionBar Up button and Navigation pattern

它工作正常,但在一种情况下除外:如果 Activity A 创建 Activity B,然后我按向上键,它将毫无问题地导航到 A。

但是,当我到达 Activity B,然后切换到另一个 App,然后切换回我的 App,现在我按下向上按钮,它将导航到主屏幕而不是 Activity 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);
}
}

最佳答案

更改 Activity A 的属性来自

android:launchMode="singleInstance"

android:launchMode="singleTask"

解决了这个问题。这是有道理的,因为“singleInstance” Activity 不允许其他 Activity 成为其任务的一部分。这是任务中的唯一 Activity 。如果它启动另一个 Activity ,则该 Activity 将分配给另一个任务。所以 Up 之前工作的唯一原因是因为 Activity A 位于之前 Activity 的“下方”:它给人一种回到之前 Activity 的错觉。

关于android - 实现 ActionBar 向上按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16900767/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com