web-dev-qa-db-fra.com

getActionBar () renvoie Null (AppCompat-v7 21)

Mon application se bloque à la minute où je l'exécute après avoir changé mon AppCompat-v7 en 21.0.0 et compilé sans problème.

Cela me donne l'erreur:

Java.lang.NullPointerException: Attempt to invoke virtual method 'void Android.app.ActionBar.setIcon(int)' on a null object reference

sur cette ligne:

getActionBar().setIcon(R.drawable.ic_action_bar);

Il fonctionne avec AppCompat-v7 20.0.0, mais pas avec 21.0.0.

43
user3184899

Vous devez appeler getSupportActionBar() sur un ActionBarActivity . N'appelez pas getActionBar() - qui n'est pas disponible sur les appareils plus anciens, et pour la nouvelle édition r21 de appcompat-v7, Je m'attendrais à ce qu'il renvoie null tout le temps, car le nouveau ActionBarActivity désactive et remplace la barre d'actions système.

85
CommonsWare

Si votre activité est AppCompatActivity, vous pouvez obtenir la barre d'action comme ceci:

Android.support.v7.app.ActionBar mActionBar = getSupportActionBar();
10
Ivo Stoyanov
Object actionBar = getSupportActionBar();

Android.support.v7.internal.app.WindowDecorActionBar bar = (Android.support.v7.internal.app.WindowDecorActionBar) actionBar;

Si vous développez une application ciblant 21SDK mais que l'application va être utilisée sous des sdk plus anciens, ces lignes ci-dessus sont la solution.

Vous ne pouvez pas utiliser getActionBar () sous 21SDK lorsque votre activité étend ActionBarActivity

2
kamilws

Remplacez ActionBar par Android.support.v7.app.ActionBar dans tout votre code. et utilisez setSupportActionBar (). Etendez également votre activité depuis AppCompatActivity. utilisez Android supporte la dépendance v7.

0
Imran Khan