Android getActionBar vs getSupportActionBar?

Aquí está mi código:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){ //android.support.v7.app.ActionBar actionBar = getSupportActionBar(); //actionBar.setTitle("Android"); ActionBar actionBar = getActionBar(); actionBar.setTitle("Droid"); } 

Mientras uso el getSupportActionBar () mi aplicación se ejecuta muy bien con kitkat y otras nuevas versiones, pero utilizando los resultados getActionBar en un error.

Aquí está el error:

 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.hide()' on a null object reference at com.github.domain.geoquiz.QuizActivity.onCreate(QuizActivity.java:57) at android.app.Activity.performCreate(Activity.java:5933) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)            at android.app.ActivityThread.access$800(ActivityThread.java:144)            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)            at android.os.Handler.dispatchMessage(Handler.java:102)            at android.os.Looper.loop(Looper.java:135)            at android.app.ActivityThread.main(ActivityThread.java:5221)            at java.lang.reflect.Method.invoke(Native Method)            at java.lang.reflect.Method.invoke(Method.java:372 

¿Por qué? De las documentaciones de Android:

Precaución: Asegúrese de importar la clase ActionBar (y las API relacionadas) del paquete apropiado:

Si soporta niveles de API inferiores a 11: import android.support.v7.app.ActionBar

Si sólo admite API de nivel 11 y superior: import android.app.ActionBar

¿Por qué esta aplicación se está bloqueando?

Si utiliza AppCompat siempre tiene que llamar a getSupportActionBar() sin importar la versión de Android que esté ejecutando su aplicación.

¿Qué versiones de Android segmenta?

Le aconsejo que utilice la nueva barra de herramientas en lugar de ActionBar, porque es mucho más flexible de usar.

Si está extendiendo AppCompatActivity entonces está proporcionando soporte para versiones anteriores de Android y para eso tiene que usar getSupportActionBar() .

Si está importando android.app.ActionBar entonces usted tiene que usar getActionBar() y si está importando android.support.v7.app.ActionBar entonces usted tiene que usar getSupportActionBar() .

Nota: Al utilizar android.support.v7.app.ActionBar , puede proporcionar soporte retroactivo para versiones anteriores de Android.

  • No se pudo bloquear la superficie
  • Cómo utilizar SearchView en la barra de herramientas de Android
  • Agregar barra de herramientas a la actividad causa NoClassDefFoundError
  • Personalizar Android ActionBar
  • ¿Por qué está el menú desplegable de desbordamiento encima de la barra de acción?
  • Cambiar el color del menú de menú por color mediante programación
  • ¿Cuál es la diferencia entre setDisplayHomeAsUpEnabled y setHomeButtonEnabled?
  • Android: quita el botón "Más acciones" del ActionBar
  • Android: el margen entre el icono de ActionBar y el menú desplegable de Navegación cambia al hacer clic en Buscar
  • Los elementos de menú no se muestran en la barra de acciones
  • Cómo cambiar el texto en la barra de acción
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.