android getSupportActionBar () devuelve null en el fragmento
ACTUALIZAR
No había mencionado nada sobre el uso de ToolBar con ActionBarActivity
. Y esa es la razón por la que siempre obtengo la excepción de puntero nulo. Para aquellos que enfrentan el mismo problema, por favor refiérase a esta respuesta
- Uso de la barra de acción de soporte de inicio activada
- El color primario (a veces) se vuelve transparente
- No se pudo resolver resource @ style / Widget.Holo.Light.ActionMode.Inverse
- No puedo compilar mi proyecto android
- Canot resolver android.support.v7.internal.widget.TintImageView
Tengo este código de fragmento para cambiar la apariencia de la barra de acción de soporte cuando se cambia el fragmento.
@Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); setHasOptionsMenu(true); mActionBar = ((ActionBarActivity)getActivity()).getSupportActionBar(); SpannableString s = new SpannableString("Dashboard"); s.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.app_blue_text)), 0, s.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE); s.setSpan(new TypefaceSpan(getActivity(), "Optima-Regular.ttf"), 0, s.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); if( null!= mActionBar){ mActionBar.setElevation(0); mActionBar.setTitle(s); } }
He referido preguntas anteriores / similares sobre cómo solucionar este error. Estas soluciones sugieren cambiar el aspecto de la onActivityCreated()
de onActivityCreated()
en el método onActivityCreated()
. Intenté onAttach()
también. Ninguno parece funcionar. He utilizado la barra de acción de soporte para mantener la compatibilidad con versiones anteriores. Activity
también se ActionBarActivity
según ActionBarActivity
.
Código completo es bastante largo, así que he saltado publicar. Si es necesario, puedo publicar el código completo y actualizar la pregunta con más detalles también.
Registro de errores
Caused by: java.lang.NullPointerException at com.example.testapp.fragments.NavigationDrawerFragment.onActivityCreated(NavigationDrawerFragment.java:215)
La línea 215 es: mActionBar.setElevation(0);
- Cómo crear una barra de herramientas de la tarjeta usando appcompat v7
- Estilo AppCompat SearchView con AppCompat 22.1.0 no funciona
- AppCompatActivity.onCreate sólo se puede llamar desde dentro del mismo grupo de bibliotecas
- No se pudo mostrar elementos con la biblioteca AppCompat
- RecyclerView: java.lang.IndexOutOfBoundsException: Inconsistencia detectada. Posición de artículo no válida
- Android.support.v7.widget.Toolbar icon problema de alineación
- Button BackgroundTint no funciona con AppCompat v23
- ¿Por qué mi vista de barra de acciones personalizadas no coincide con "parent" cuando se utiliza appcompat y Toolbar?
Me faltó mencionar poco más información en esta pregunta. Esa es la razón por la que otros usuarios agradables de SO no pudieron contestar correctamente. Así que aquí respondo yo mismo.
He utilizado ToolBar en lugar de ActionBar
regular. Cuando utilice ToolBar
, debe establecerlo como ActionBar. Así que haciendo –
toolbar = (Toolbar) getActivity().findViewById(toolbarId); ((ActionBarActivity)getActivity()).setSupportActionBar(toolbar);
Y después de eso puedo cambiar el título y la apariencia fácilmente por –
((ActionBarActivity)getActivity()).getSupportActionBar().setTitle(s);
Sólo recuerde establecer la barra de herramientas como barra de acción antes de utilizar realmente barra de acción en el fragmento.
Solo usa:
mActionBar = getActivity().getSupportActionBar();
o:
mActionBar = ((yourActivityName)getActivity()).getSupportActionBar();
[ UPDATE ] Quitar la línea mActionBar.setElevation(0);
porque setElevation
sólo está disponible para API 21+
- android sdk eclipse, samsung galaxy tab 2, Cómo reconocer dispositivos
- ¿Es seguro usar esta forma de pasar el contexto a clases sin contexto