从设置活动中导航回来

时间:2015-12-11 11:33:07

标签: android

我正在使用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。

3 个答案:

答案 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是您的应用包名称