setsupportactionbar getsupportactionbar example custom bar java android android-actionbar

java - getsupportactionbar - ¿Mostrar/retroceder el botón en la PreferenceScreen anidada de Android?



show action bar android (3)

Tengo una PreferenceScreen de dos niveles:

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

Mi problema es que la segunda pantalla no muestra el botón de atrás / arriba en la barra de acción automáticamente. ¿Cómo hago que el botón de subir aparezca en adv_settings?


Puede agregar la flecha escribiendo un estilo de barra de acciones personalizado para usar con el tema de su aplicación.

res / values-v11 / styles.xml: (o agréguelos a sus styles.xml existentes)

<?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>

A continuación, aplique este tema en su AndroidManifest.xml:

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


Nota : La forma obvia de agregar esta flecha debería ser llamar:

getActionBar().setDisplayHomeAsUpEnabled(true);

una vez que se cargó la segunda pantalla, pero creo que hay un error de Android donde getActionBar () siempre devuelve el objeto ActionBar de primer nivel, a diferencia del que está actualmente visible, por lo que la configuración de la flecha falla dinámicamente.


Esto puede ser más trabajo, pero podría crear dos archivos de PreferenceAtivity cada uno con su propio PreferenceFragment. Cada PreferenceFragment tendrá su propio PreferenceScreen XML (la pantalla de primer nivel y la segunda pantalla de nivel). Desde la primera pantalla de nivel, ejecuta la segunda actividad de preferencia con un intento dentro de la etiqueta. En la segunda actividad de preferencia, puede establecer el icono de inicio haciendo esto:

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

y luego también tenía un controlador para el botón de inicio:

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

Bienes:

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