我正在使用Android Studio,所以我使用向导创建了一个SettingsActivity,我遇到的问题是无法使用“向上”箭头从此设置活动导航回主要活动动作栏。
Actionbar的设置如下所示:
private void setupActionBar() {
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
// Show the Up button in the action bar.
actionBar.setDisplayShowHomeEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
动作栏不是空btw。
并且parentActitvityName在AndroidManifest中设置:
<activity
android:name=".SettingsActivity"
android:label="@string/title_activity_settings"
android:parentActivityName=".MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.demo.app.MainActivity" />
</activity>
然而,点击箭头不会做任何事情。甚至onOptionsItemSelected都没有被触发。
似乎这是完全相同的问题 Action bar setDisplayHomeAsUpEnabled not working on ICS但是从详细信息导航到概述活动在同一个应用程序中工作正常。此外,我将MinSDK设置为15,将TargetSDK设置为23。
答案 0 :(得分:22)
覆盖AppCompatPrefernceActivity上的onOptionsItemSelected
方法并使其像这样
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case android.R.id.home:
super.onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
答案 1 :(得分:2)
Vspallas的回答是正确的。错误就在我身边。我在preferenceFragment中有一个onOptionsItemSelected方法,而不是在Activity中。 Mea culpa。
答案 2 :(得分:0)
您可以在设置活动中使用它
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
然后在androidManifest中与您所做的相同
<activity
android:name=".SettingsActivity"
android:parentActivityName=".MainActivity"
android:label="@string/title_activity_settings">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.app_name.MainActivity" />
</activity>
此com.example.app_name
是您的应用包名称