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


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);

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+

  • ActionBar en PreferenceFragment no volver a calcular la altura y el tamaño de fuente
  • Error al importar un proyecto de Eclipse en Android Studio
  • Android appCompat problema con samsung y wiko
  • ¿Cómo puedo utilizar vectorDrawable como icono para notificaciones push mediante Android Support Library 23.2? setSmallIcon da error
  • Error: no se pudo encontrar el destino con la cadena de hash 'android-21'
  • Animar el icono de ActionBarDrawerToggle mediante programación
  • No se encontró ningún recurso que coincida con el nombre dado 'Theme.AppCompat.Light.DarkActionBar'
  • La sub-pantalla de preferencia no se abre cuando se usa support.v7.preference
  • Mientras uso la biblioteca de soporte técnico estoy recibiendo un error que el atributo "" ya ha sido definido en android
  • Diferentes estilos de colorControlActivated en Android
  • Si utilizo la nueva "biblioteca V7 Appcompat", ¿necesito todavía "V4 Support Library" para un SDK mínimo de 7?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.