通常,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)資料: