Android报错:getActionBar()报空指针异常

错误描述:

报错:
Attempt to invoke virtual method 'android.content.Context android.app.ActionBar.getThemedContext()' on a null object reference
在使用 ActionBar的时候,有时候会爆出空指针异常,这是因为应用没有获取到 ActionBar 导致的。

解决办法

	android:theme="@android:style/Theme.Holo.Light"
  1. 检查你的应用是否设置了没有 ActionBar 的主题Theme,或者直接设置了 NoActionBar或NoTitleBar 属性。主要要检查这几点:检查 AndroidManifest.xml 中的 标签中的theme属性,然后检查各个 Activity 标签中是否有不同的 Theme 导致这个界面的 ActionBar 无法显示,@android:style/Theme.NoTitleBar和false
    true这样的属性都会使应用中的 ActionBar消失,切记,如果你要使用ActionBar,则一定要清除掉这些Theme属性设置,如果你的项目中 res 目录下除了 values 目录外,还有其他的res/values-v11,style/values-v14等,则这些目录中的 styles.xml 都需要检查一下,最后再检查下 Activity 代码中是否动态设置了全屏或者不显示TitleBar,代码如下:

    //requestWindowFeature(Window.FEATURE_NO_TITLE);
    //getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

    上面的两句代码,上面一句设置Activity不显示TitleBar, 下一句则设置Activity为全屏模式,这两句代码都会导致 ActionBar
    无法显示,从而使 getActionBar()获取失败,如果你的项目中的 Activity 有父一级别的 Activity,则也需要将父一级别的Activity中的NoTitle和全屏代码注释掉;

    例如:这个主题就会正常拿到actionbar

	android:theme="@android:style/Theme.Holo.Light"
  1. 如果你的项目使用的是 android.app.ActionBar,则需要把你应用的最低支持版本改为11(Android 3.0),使用 getActionBar() 来获取ActionBar,如果你的项目要支持Android 3.0以下,则你的项目需要引入最新的 AppCompat 兼容包,然后将 ActionBar引用改为 android.support.v7.app.ActionBar,并使用 getSupportActionBar 来获取 ActionBar;

猜你喜欢

转载自blog.csdn.net/sinat_29675423/article/details/86365266