您的位置:首页 > 编程语言 > Java开发

getActionBar()返回为空 空指针错误 Caused by: java.lang.NullPointerException

2017-01-03 14:26 681 查看

getActionBar()返回为空 空指针错误 Caused by: java.lang.NullPointerException

添加返回按钮时候,报错,如图:

Avtivity中代码:



应用停止:



报错提示:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)' on a null object reference


原因

如果没有使用NoActionBar的样式(theme),则可能是由于当前Activity继承自AppCompatActivity。

getActionBar是Activity中的方法。

getActionBar

Added in API level 11
ActionBar getActionBar ()
Retrieve a reference to this activity's ActionBar.

Returns
ActionBar   The Activity's ActionBar, or null if it does not have one.


重构AppCompat,在新的AppCompat中,加入主题色,Toolbar等功能。

在新版本中推荐使用AppCompatActivity代替ActionBarActivity。在14年的Android5.0的时候就用Toolbar替代了ActionBar,而ActionBarActivity又被AppCompatActivity替代,所以目前最新的方式是让Activity继承自AppCompatActivity,并使用ToolBar,虽然它的用法更复杂

而AppCompatActivity来自于android.support.v7支持库.android.support.v7.AppCompatActivity

google提供了Android Support Library package 系列的包来保证来高版本sdk开发的向下兼容性,即我们用4.x开发时,在1.6等版本上,可以使用高版本的有些特性,如Fragement,ViewPager等

v7 支持库:一些库旨在与 Android 2.3(API 级别 9)及更高版本搭配使用。这些库提供了特定的功能集,并且可以单独添加到应用中,与其他库互不影响。

注:此库依赖于 v4 支持库。

其中:

getSupportActionBar()

Support library ve
9fce
rsion of getActionBar().

getSupportActionBar()提供原有 getActionBar()的功能

解决方法

首先查看你的AndroidMainiFest中theme正常,不是诸如NoActionBar的样式

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">


其次

查看你的Activity的类型,如果继承自AppCompatActivity,则需要使用getSupportActionBar()

public class NumbersActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.word_list);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐