Подтвердить что ты не робот

Показать/вернуть кнопку на Android-экране в режиме ожидания?

У меня есть двухуровневый PreferenceScreen:

<PreferenceScreen>
general settings
   <PreferenceScreen android:key="adv_settings">
   more advanced settings
   </PreferenceScreen>
</PreferenceScreen>

Моя проблема заключается в том, что на втором экране не отображается кнопка "назад/вверх" на панели действий автоматически. Как сделать кнопку вверх на adv_settings?

4b9b3361

Ответ 1

Вы можете добавить стрелку, написав собственный стиль ActionBar, который будет использоваться с вашей темой приложения.

res/values-v11/styles.xml: (или добавьте их в существующие стили .xml)

<?xml version="1.0" encoding="utf-8"?>
<resources>    
  <style name="MyTheme" parent="@android:style/Theme.Holo.Light">
    <item name="android:actionBarStyle">@style/MyActionBar</item>
  </style>

  <style name="MyActionBar" parent="@android:style/Widget.Holo.ActionBar">
    <item name="android:displayOptions">showHome|homeAsUp|showTitle</item>
  </style>
</resources>

Затем примените эту тему в своем AndroidManifest.xml:

<application android:theme="@style/MyTheme">


Примечание. Очевидным способом добавления этой стрелки является вызов:

getActionBar().setDisplayHomeAsUpEnabled(true);

после загрузки второго экрана, но я думаю, что там есть ошибка Android, где getActionBar() всегда возвращает объект ActionBar первого уровня, а не тот, который в настоящее время виден, поэтому установка динамической ошибки не выполняется.

Ответ 2

Это может быть больше работы, но вы можете создать два файла PreferenceAtivity, каждый со своим собственным PreferenceFragment. Каждый PreferenceFragment будет иметь свой собственный XML PreferenceScreen (экран первого уровня и второй экран уровня). На экране первого уровня вы запускаете вторую функцию PreferenceActivity с намерением внутри тега. Во второй PreferenceActivity вы можете установить значок дома, выполнив следующее:

ActionBar bar = getActionBar();
bar.setDisplayHomeAsUpEnabled(true);

а затем также был обработчик для кнопки home:

@Override
public boolean onOptionsItemSelected(MenuItem item)
{
    if (item.getItemId() == android.R.id.home) {
        finish();
    }

    return false;
}

Активы:

FirstPreferenceActivty
FirstPreferenceFragment
pref_first.xml (layout with PreferenceScreen and Prefernce nodes)

SecondPreferenceActivty
SecondPreferenceFragment
pref_second.xml (layout with PreferenceScreen and Prefernce nodes)

Ответ 3

Если кнопка не появляется автоматически, вы можете добавить ее вручную, как показано на этих ссылках:

Android: как настроить пользовательский экран предпочтений?

http://pastebin.com/334Eip35

Во втором ответе этого вопроса SO есть пример кода, и фрагмент в нем взят, вероятно, из другого места pastebin.