簡體   English   中英

Android getActionBar vs getSupportActionBar?

[英]Android getActionBar vs getSupportActionBar?

這是我的代碼:

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

使用getSupportActionBar()時,我的應用程序與kitkat和其他新版本運行良好,但使用getActionBar導致錯誤。

這是錯誤:

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

為什么? 來自android文檔:

警告:確保從相應的包中導入ActionBar類(和相關的API):

如果支持的API級別低於11:import android.support.v7.app.ActionBar

如果僅支持API級別11及更高級別:import android.app.ActionBar

現在為什么這個應用程序崩潰了?

如果您正在使用AppCompat,無論您的應用程序運行的是哪個Android版本,您都必須調用getSupportActionBar()

您定位的是哪個Android版本?

我建議你使用新的工具欄而不是ActionBar,因為它的使用方式更靈活。

如果您正在擴展AppCompatActivity那么您將為較舊的Android版本提供后向支持,為此您必須使用getSupportActionBar()

如果要導入android.app.ActionBar則必須使用getActionBar() ,如果要導入android.support.v7.app.ActionBar則必須使用getSupportActionBar()

注意:通過使用android.support.v7.app.ActionBar ,您可以為較舊的Android版本提供后向支持。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM