Android “getActionBar()返回NullPointerException”問(wèn)題分析

通常,activity.getActionBar()返回NullPointerException原因是當(dāng)前的activity沒(méi)有ActionBar。從以下幾個(gè)方面著手:

1. 檢查minSdkVersion,必須大于等于11

Paste_Image.png

11之前的版本是不支持ActionBar的。

2. 檢查主題是否引入的是帶有noActionBar字樣的主題。

如果引入NoActionBar,顧名思義,沒(méi)有ActionBar,肯定回報(bào)空指針了。

3. 看看你的Activity是繼承自Activity還是AppCompatActivity。

這里有相對(duì)麻煩點(diǎn)了:

  • 如果直接繼承自Activity那么在主題文件中就不能用AppCompatTheme也就是Theme.AppCompat.*的主題,使用android:Theme.Light等是可以的。這樣activity.getActionBar()能正確返回ActionBar對(duì)象。
getActivity().getActionBar().setDisplayHomeAsUpEnabled(true);
  • 如果繼承自AppCompatActivity,那么主題文件中需要使用AppCompatTheme,同時(shí)獲取ActionBar的方法需要用getSupportActionBar(),如下:
((AppCompatActivity)getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);

相關(guān)資料:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容