ActionBar使用的时候空指针?

今天编写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类型啊。

希望可以帮助到遇到问题的小伙伴。。。。不用谢我,请叫我雷锋。


猜你喜欢

转载自blog.csdn.net/albb_/article/details/80923845