今天编写Actionbar的时候遇到了一个问题,这里不再记录ActionBar的属性如何使用,这些百度一大堆,而且文档里写的很清楚,每个人遇到的问题不一样,我这里记录的是自己编写的时候遇到的问题,虽然问题比较简单,但是自己记录了之后以后就会有经验,也希望能够给那些跟我一样遇到相同问题的小伙伴一些提示,废话不多说:
页面很简单,一个按钮,点击的时候调用ActionBar的show()方法。
但是点击的时候遇到了一个问题:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.show()' on a null object reference
这里可以看出,报了空指针异常的问题,我这里使用的是android.app的Activity所以报了view.android.app.AnctionBar.show() 找不到接口。
后来查找文件发现了一下解决方案:
第一:在清单文件中检查应用于相关活动的主题:
如果:android:theme="@android:style/Theme.material.NoActionBar的时候,说明ActionBar已经被关闭了,将不能使用ActionBar.
遇到这种问题,就需要修改活动主题。
第二:看看引用的Activity。 是AppCompattActivity还是Activity?
例如:Fragment是非appCompat类型的,而android.support.v4.app.Fragment或者android.support.v4.app.ActivityCompat是基于appCompat的
如果:你的Activity是appCompatActivity我们使用getSupportActionBar()否则是android.app类型我们可以使用getActionBar()
其实还有一种情况下需要注意:如果主题应用于清单中的活动如下:android:theme="@style/Theme.AppCompat.Light"那么你必须使用getSupportActionbar()如果你非要用getActionBar()是不会有用滴。
为什么呢?
因为Theme.AppCompat是AppCompat类型啊。
希望可以帮助到遇到问题的小伙伴。。。。不用谢我,请叫我雷锋。