Показать/вернуть кнопку на Android-экране в режиме ожидания?
У меня есть двухуровневый PreferenceScreen:
<PreferenceScreen>
general settings
<PreferenceScreen android:key="adv_settings">
more advanced settings
</PreferenceScreen>
</PreferenceScreen>
Моя проблема заключается в том, что на втором экране не отображается кнопка "назад/вверх" на панели действий автоматически. Как сделать кнопку вверх на adv_settings?
Ответы
Ответ 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.