2014-10-18 5 views
41

La mia app si arresta nel momento in cui lo eseguo dopo aver modificato AppCompat-v7 in 21.0.0 e compilato senza problemi.getActionBar() restituisce Null (AppCompat-v7 21)

Mi dà l'errore:

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

su questa linea:

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

Funziona con AppCompat-v7 20.0.0, ma non con 21.0.0.

risposta

81

È necessario chiamare getSupportActionBar() on an ActionBarActivity. Non chiamare getActionBar() - che non è disponibile su dispositivi precedenti, e per la nuova edizione r21 di appcompat-v7, mi aspetto che restituisca null continuamente, poiché il nuovo ActionBarActivity disabilita e sostituisce la barra delle azioni del sistema.

+0

oltre a questo, è necessario assicurarsi che barra degli strumenti viene aggiunto nel nostro layout e si sta chiamando 'setSupportActionBar (yourToolBar)' – Ankit

+0

Non c'è getSupportActionBar nella mia ActionBarActivity – Roel

+0

@DalvikVM: Non ci dovrebbero essere: http: // sviluppatore .android.com/reference/android/support/v7/app/ActionBarActivity.html # getSupportActionBar% 28% 29 – CommonsWare

2
Object actionBar = getSupportActionBar(); 

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

Se si sta sviluppando un'applicazione mira 21SDK ma app sta per essere utilizzati sotto anziani SDK allora questo le linee di cui sopra sono la soluzione.

Non è possibile utilizzare getActionBar() sotto 21SDK quando l'attività si estende ActionBarActivity

9

Se la vostra attività è AppCompatActivity, è possibile ottenere la barra delle operazioni in questo modo:

android.support.v7.app.ActionBar mActionBar = getSupportActionBar(); 
0

Sostituire ActionBar da Android. support.v7.app.ActionBar in tutto il codice. e usa setSupportActionBar() anche Estendi la tua attività da AppCompatActivity. utilizzare la dipendenza v7 supporto Android.