Android 被ActionBar向上导航弄糊涂了
我正在尝试基于Android设计指南()实现ActionBar UP导航 对于大多数用例来说,这很简单,但假设我有一个名为Activity2A的活动,可以通过两条不同的路径访问我的用户: 主活动->活动1a->活动2a 主活动->活动1b->活动2a Activity2A的逻辑父级是Activity1A,因此从Activity2A向上导航时应该启动它。我根据官方教程在清单中设置了以下内容: 如果我在第一个路径上导航到Activity2A,它就可以正常工作(因此它的逻辑父级已经在Activity堆栈上)。但是使用第二条路径,单击向上按钮会将我带到MainActivity(根),而不是Activity1A(逻辑父级)。我正在Android 4.2上测试这段代码Android 被ActionBar向上导航弄糊涂了,android,android-actionbar,android-support-library,Android,Android Actionbar,Android Support Library,我正在尝试基于Android设计指南()实现ActionBar UP导航 对于大多数用例来说,这很简单,但假设我有一个名为Activity2A的活动,可以通过两条不同的路径访问我的用户: 主活动->活动1a->活动2a 主活动->活动1b->活动2a Activity2A的逻辑父级是Activity1A,因此从Activity2A向上导航时应该启动它。我根据官方教程在清单中设置了以下内容: 如果我在第一个路径上导航到Activity2A,它就可以正常工作(因此它的逻辑父级已经在Activit
我做错了什么 你在安卓4.0或2.3上也有同样的问题吗?没有,在4.1以下的所有版本上,它的工作方式实际上完全不同。当堆栈看起来像MainActivity->Activity1B->Activity2A时,我按下UP键,它将是MainActivity->Activity1B->Activity1A。所以Activity2A被它的父代替换了,这增加了我的困惑。同样的事情也发生在我身上,看起来它是安卓4.1+上的一个bug(它的新版本),在support Libcheck上运行良好。检查这个答案以获得解决方案谢谢,这就解决了问题!
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.Sherlock.Light" >
<!-- Main menu -->
<activity
android:name="hu.scythe.upnavigation.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- Level 1 -->
<activity
android:name="hu.scythe.upnavigation.Activity1A"
android:label="@string/title_activity_activity1"
android:parentActivityName="hu.scythe.upnavigation.MainActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="hu.scythe.upnavigation.MainActivity" />
</activity>
<activity
android:name="hu.scythe.upnavigation.Activity1B"
android:label="@string/title_activity_activity1_b"
android:parentActivityName="hu.scythe.upnavigation.MainActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="hu.scythe.upnavigation.MainActivity" />
</activity>
<!-- Level 2 -->
<activity
android:name="hu.scythe.upnavigation.Activity2A"
android:label="@string/title_activity_activity2"
android:parentActivityName="hu.scythe.upnavigation.Activity1A" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="hu.scythe.upnavigation.Activity1A" />
</activity>
</application>
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case 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);
}
return true;
}
return super.onOptionsItemSelected(item);
}