通常,activity.getActionBar()
返回NullPointerException
原因是当前的activity没有ActionBar。从以下几个方面着手:
1. 检查minSdkVersion
,必须大于等于11
11之前的版本是不支持ActionBar的。
2. 检查主题是否引入的是带有noActionBar
字样的主题。
如果引入NoActionBar
,顾名思义,没有ActionBar,肯定回报空指针了。
3. 看看你的Activity是继承自Activity
还是AppCompatActivity
。
这里有相对麻烦点了:
- 如果直接继承自
Activity
,那么在主题文件中就不能用AppCompatTheme
,也就是Theme.AppCompat.*
的主题,使用android:Theme.Light
等是可以的。这样activity.getActionBar()
能正确返回ActionBar对象。
getActivity().getActionBar().setDisplayHomeAsUpEnabled(true);
- 如果继承自
AppCompatActivity
,那么主题文件中需要使用AppCompatTheme
,同时获取ActionBar的方法需要用getSupportActionBar()
,如下:
((AppCompatActivity)getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
相关资料: