La compatibilidad de Action Bar se ha agregado a la biblioteca de soporte, revisión 18. Ahora tiene ActionBarActivityclase para crear actividades con Action Bar en versiones anteriores de Android.
¿Hay alguna forma de agregar Action Bar desde la biblioteca de soporte PreferenceActivity?
Anteriormente utilicé ActionBarSherlock y lo ha hecho SherlockPreferenceActivity.

Respuestas:
EDITAR: En appcompat-v7 22.1.0, Google agregó la clase abstracta AppCompatDelegate como delegado que puede usar para extender el soporte de AppCompat a cualquier actividad.
Úselo así:
No más pirateo. Código tomado de AppCompatPreferenceActivity.java .
fuente
(ViewGroup) getWindow().getDecorView().getRootView()Actualmente no hay forma de lograrlo con AppCompat. He abierto un error internamente.
fuente
PreferenceActivityque nos agreguenActionBarCompat?He logrado crear una solución similar a la que usa Google Play Store. Enlace a la respuesta original
Encuentre el repositorio de GitHub: aquí
Muy similar a su propio código, pero agregó xml para permitir establecer el título:
Continuando con el uso
PreferenceActivity:settings_toolbar.xml :SettingsActivity.java :Result :ACTUALIZACIÓN (compatibilidad de pan de jengibre):
Como se señaló aquí , los dispositivos Gingerbread están devolviendo NullPointerException en esta línea:
REPARAR:
SettingsActivity.java :Cualquier problema con lo anterior, hágamelo saber!
ACTUALIZACIÓN 2: SOLUCIÓN DE TINTADO
Como se señala en muchas notas de desarrollo
PreferenceActivity, no admite el tinte de elementos, sin embargo, al utilizar algunas clases internas, PUEDE lograr esto. Eso es hasta que se eliminen estas clases. (Funciona con appCompat support-v7 v21.0.3).Agregue las siguientes importaciones:
Luego anule el
onCreateViewmétodo:Result:AppCompat 22.1
AppCompat 22.1 introdujo nuevos elementos teñidos, lo que significa que ya no es necesario utilizar las clases internas para lograr el mismo efecto que la última actualización. En cambio, siga esto (aún anulando
onCreateView):PANTALLAS DE PREFERENCIA ANIDADA
<PreferenceScreen />Sin embargo, muchas personas están experimentando problemas al incluir la barra de herramientas en correos anidados , ¡he encontrado una solución! - ¡Después de mucho ensayo y error!Agregue lo siguiente a su
SettingsActivity:La razón por la cual
PreferenceScreenes tan difícil es porque se basan en un diálogo de contenedor, por lo que debemos capturar el diseño del diálogo para agregarle la barra de herramientas.Barra de herramientas de sombra
Por diseño, la importación
Toolbarno permite la elevación y el sombreado en dispositivos anteriores a v21, por lo que si desea tener elevación en suToolbar, debe envolverlo en unAppBarLayout:`settings_toolbar.xml:
Sin olvidar agregar el agregar la biblioteca de soporte de diseño como una dependencia en el
build.gradlearchivo:Android 6.0
He investigado el problema de superposición informado y no puedo reproducirlo.
El código completo en uso como el anterior produce lo siguiente:
Si me falta algo, hágamelo saber a través de este repositorio e investigaré.
fuente
:)PreferenceActivitytan difícil de usar ? Se supone que ahorra tiempo. También podría hacer una actividad regular y diseñar manualmente todas las configuraciones en un diseño lineal. ¡Fuuuuck!Se encontró una implementación de PreferenceFragment basada en el fragmento support-v4
https://github.com/kolavar/android-support-v4-preferencefragment
Editar: ¡Acabo de probarlo y funciona muy bien!
fuente
La integración
PreferenceActivitycon ABC no es posible, al menos para mí. Probé las dos posibilidades que pude encontrar pero ninguna funcionó:Opción 1:
ActionBarPreferenceActivityse extiendePreferenceActivity. Cuando haces esto te restringenActionBarActivityDelegate.createDelegate(ActionBarActivity activity). También necesitas implementarActionBar.Callbacksque no es accesibleOpcion 2:
ActionBarPreferenceActivityse extiendeActionBarActivity. Este enfoque requiere la reescritura de una versión completamente nuevaPreferenceActivity,PreferenceManagery puede ser loPreferenceFragmentque significa que necesita acceso a clases ocultas comocom.android.internal.util.XmlUtilsLa solución a esto solo puede provenir de los desarrolladores de Google que implementen unaActionBarWrapperque se pueda agregar a cualquier actividad.Si realmente necesita una actividad preferencial, mi consejo por ahora es
ActionBarSherlock.Sin embargo, logré implementarlo aquí .
fuente
Antecedentes del problema:
El PO quiere saber cómo podemos poner
MenuItems en elActionBardePreferenceActivitypre-nido de abeja debido biblioteca de soporte de Android tiene un error que no permite que esto suceda.Mi solución:
He encontrado una forma mucho más limpia, de lo que ya se propuso, para lograr el objetivo (y lo encontré en los Documentos de Android ):
Ahora haz lo que normalmente harías en tu
onOptionsItemSelected(). Como es parte de Android Docs, no tiene efectos secundarios.Feliz codificación :)
Actualizar:
Esta solución ya no funciona si estás apuntando a Lollipop. Si está utilizando AppCompat, esta respuesta es lo que debería estar buscando.
fuente
PreferencesActivityno habría forma de colocar elementosActionBar, especialmente el botón de retroceso. Mi respuesta es una buena solución para eso.:)Pude llegar
android.app.ActionbarusandogetActionBar(). Al principio devolvió un valor nulo ... luego fui al manifiesto y cambié el tema a:Luego pude volver a tener la barra de acción. Supongo que esto solo funcionará para ciertos niveles de compilación. Por lo tanto, es posible que desee verificar el número de compilación o verificar si el valor devuelto es nulo.
Estaré bien para mí porque la aplicación en la que estoy trabajando es para
ICS/4.0+.fuente
Ahora se ha publicado la respuesta oficial a este problema. Es el soporte de preferencias v7 / v14 biblioteca de .
Consulte ¿Cómo usar la biblioteca de soporte de preferencias v7 / v14? para la discusión sobre cómo usarlo.
fuente