SetHomeButtonEnabled on PreferenceActivity и вложенные предпочтения

У меня есть экран предпочтений расширенный PreferenceActivity . Для таргетинга на OS 4.0.3 я хотел добавить < значок в панель действий, поэтому я сделал это в onCreate() .

 ActionBar actionBar = getActionBar(); actionBar.setHomeButtonEnabled(true); actionBar.setDisplayHomeAsUpEnabled(true); 

Это сработало. < Был добавлен влево значок приложения. Но когда я нажимаю элемент, который переходит на следующий уровень (более подробный экран), < будет отображаться. Вернувшись на верхний уровень, снова появится символ < .

Я никогда не думал о механизме вложенных предпочтений, так как smart preferenceActivity скрывает его. Теперь мой вопрос: почему в PreferenceActivity не будет отображаться < on вложенное предпочтение?

Я не хочу утверждать, что мне не нужно добавлять < на экран предпочтений. (Даже некоторые приложения Google добавляются, а некоторые нет, поэтому я думаю, что для этого нет твердого правила).

Если для этого есть простое решение, я хочу решить эту проблему.

Вместо того, чтобы динамически добавлять это, вы должны добавить стрелку, написав собственный стиль ActionBar, который будет использоваться с вашей темой приложения. (В принципе, см. https://stackoverflow.com/a/16247111/582004 )

Вам нужно включить кнопку «Дом» и панель действий для каждого действия, которое вы хотите показать навигацией ВВЕРХ. Вы также должны установить родительскую активность в манифесте.

См. Этот вопрос для деталей gory: индикатор вверх не отображается

Это мой рабочий код для кнопки «Главная» в разделе «Настройки»

  @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout root = (LinearLayout)findViewById(android.R.id.list).getParent().getParent().getParent(); Toolbar bar = (Toolbar) LayoutInflater.from(this).inflate(R.layout.settings_toolbar, root, false); root.addView(bar, 0); // insert at top bar.setTitle("Settings"); bar.setTitleTextColor(Color.WHITE); bar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); addPreferencesFromResource(R.layout.settings); } 

Это параметр settings_toolbar.xml

  <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="@color/colorPrimary" android:elevation="2dp" android:fitsSystemWindows="true" android:minHeight="?attr/actionBarSize" app:navigationIcon="@drawable/gobackleftarrow" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> </android.support.v7.widget.Toolbar>