GetActionBar () devuelve null en PreferenceActivity (AppCompat-v7 21)
He implementado DoneBar (dos botones en la barra de acción) en PreferenceActivity
como se proporciona en v20 sdk muestras, pero después de actualizar SDK y AppCompat a la versión 21 mi aplicación se bloquea en
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.setDisplayOptions(int, int)' on a null object reference
- Android: "BadTokenException: No se puede agregar ventana; Está funcionando su actividad? "Al mostrar el diálogo en PreferenciaActividad
- ¿Cómo puedo seleccionar el encabezado predeterminado en mi PreferenceActivity en tabletas?
- No se puede establecer la preferencia con PreferenceActivity
- Establecer la fuente personalizada para el texto en PreferenceScreen
- Iniciar nueva actividad de PreferenceActivity
Esto se debe a que getActionBar()
devuelve null. Y no hay getSupportActionBar()
como en ActionBarActivity
.
Así que mi pregunta es cómo obtener ese objeto de barra de acciones en PreferenceActivity
para que pueda aplicar la vista personalizada en él?
Resuelto
Después de algunas investigaciones logré resolver este problema usando PreferenceFragment
con ActionBarActivity
para poder llamar a getSupportActionBar()
- Establecer indicadores de intención para PreferenceScreen en xml
- Abrir WebView no navegador de preferenciaScreen Android
- Cuándo usar CheckBox y cuando cambie
- Uso de findviewbyid en preferenciaactividad
- ¿Cómo detectar si se hicieron cambios en las preferencias?
- NullPointerException en android.widget.ArrayAdapter.createViewFromResource
- ¿Hay una manera de mantener los divisores alrededor de una preferencia no seleccionable?
- Ejemplo de MultiSelectListPreference
Me las arreglé para solucionar este problema especificando tema personalizado para mi actividad de configuración,
<style name="SettingsTheme" parent="style/Theme.AppCompat.Light"> <item name="android:windowNoTitle">false</item> <item name="android:windowActionBar">true</item> </style>
Y: android:theme="@style/SettingsTheme"
en el manifiesto para la actividad
La barra de acción se muestra de nuevo en KITKAT y LOLIPOP y (no lo han probado) de vuelta a api v11. Lo probé y funciona (sin barra de acción como se esperaba) en api 10.
Desde la depuración en lolipop, FEATURE_NO_TITLE
se estaba configurando en PhoneWindow.java:3243
:
if (a.getBoolean(R.styleable.Window_windowNoTitle, false)) { requestFeature(FEATURE_NO_TITLE);
Que elimina FEATURE_ACTION_BAR
[editar]
Pero esta barra de acción no es de tema material, así que todavía no es perfecto
[Editar2]
Me di con los encabezados, ahora estoy utilizando PreferenceFragment backport de github. Ahora todas mis barras de acción son las mismas después de la actualización a appcompact 21.
Como xXx pedido Estoy dando ejemplo cómo lo hice:
public class SettingsActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Display the fragment as the main content. getFragmentManager().beginTransaction() .replace(android.R.id.content, new SettingsFragment()) .commit(); // use action bar here ActionBar actionBar = getSupportActionBar(); } public static class SettingsFragment extends PreferenceFragment { @Override public void onCreate(Bundle paramBundle) { super.onCreate(paramBundle); addPreferencesFromResource(R.xml.pref_settings); } } }
getActionBar()
devuelve null en API 5.0 cuando uso Activity
o FragmentActivity
.
He resuelto este extendig a ActionBarActivity
public class MainActivity extends ActionBarActivity {
Debe utilizar getSupportActionBar()
cuando está utilizando ActionBarActivity
( appcompat-v7
).
Problema resuelto al hacer esto, su xml estilos debe tener este aspecto.
Res / values / style.xml
<!-- Application theme. --> <style name="AppTheme" parent="AppBaseTheme"> <item name="android:windowDisablePreview">true</item> <item name="android:windowActionBar">true</item> <!-- All customizations that are NOT specific to a particular API-level can go here. --> </style>
Res / values-v11 / style.xml
<style name="AppBaseTheme" parent="android:Theme.Holo.Light"> <!-- API 11 theme customizations can go here. --> </style>
Res / values-v14 / style.xml
<style name="AppBaseTheme" parent="android:Theme.Holo.Light"> <!-- API 11 theme customizations can go here. --> </style>
- Junit testing con gradle para un proyecto android
- Intento escribir una base de datos readonly … pero no estoy