Android getActionBar vs getSupportActionBar?
Hier ist mein code:
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");
}
Während der Verwendung der getSupportActionBar() meine app läuft einwandfrei mit kitkat und anderen neuen Versionen, aber mit getActionBar Ergebnisse in eine Fehlermeldung.
Hier ist der Fehler:
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
Warum? Von android-Dokumentationen :
Achtung: vergewissern Sie Sich, importieren Sie das ActionBar-Klasse (und die zugehörigen APIs)
aus dem entsprechenden Paket:Wenn die Unterstützung API-Stufen niedriger als die 11:
importieren android.Unterstützung.v7.app.ActionBarWenn die Unterstützung nur API-Ebene
11 und höher: import android.app.ActionBar
Nun, warum diese app abstürzt?
wenn Sie verwenden der support-Bibliothek, die Sie sollten die relais auf
Kitkat auf meinem Handy.
getSupportActionBar()
Methode. Welche android-version verwendest du zum testen?Kitkat auf meinem Handy.
InformationsquelleAutor Amit Tripathi | 2015-01-17
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie mit AppCompat Sie immer anrufen
getSupportActionBar()
egal, welche Android-Version Ihrer App ausgeführt wird.Die Android-Versionen haben Sie das Ziel?
Ich würde Ihnen raten, zu verwenden, die neue Symbolleiste statt der ActionBar, weil es viel flexibler einsetzen.
okay, wenn Sie importieren die SupportActionBar Sie immer anrufen
getSupportActionBar()
Ich habe gerade gesehen, dass AppCompat verwendet wird, in styles.xml. Also, das ist die Frage?
<style name="AppTheme" parent="Thema.AppCompat.Licht.DarkActionBar">
yep, das ist das Problem. Sie können den Zugriff auf die AppCompat ActionBar mit
getSupportActionBar()
und alles ist fein. Sie müssen nicht überprüfen der Android-version in diesem Fall.InformationsquelleAutor carstenbaumhoegger
Wenn Sie den ausbau
AppCompatActivity
dann stellen Sie rückwärts die Unterstützung für ältere Android-Versionen und für die Sie haben zu verwendengetSupportActionBar()
.Wenn Sie den Import
android.app.ActionBar
dann müssen SiegetActionBar()
und wenn Sie den Importandroid.support.v7.app.ActionBar
dann müssen SiegetSupportActionBar()
.Hinweis: mithilfe
android.support.v7.app.ActionBar
, können Sie rückwärts Unterstützung für ältere Android-Versionen.InformationsquelleAutor Chintan Shah