首页 > 解决方案 > 获取 ActionBar 时的 NullPointer

问题描述

我使用此 Q/A中的以下代码来更改 ActionBar 的背景颜色:

public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
    ActionBar bar = getActionBar();
    bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#000000")));
    setContentView(R.layout.activity_main);
}
//More codes here
}

我知道我应该在使用getSupportActionBar()时使用android.support.v7.app.ActionBarActivity. 我不使用支持 v7。我在 andoridx 环境中工作,我已经导入了以下内容,但我不确定这些是否与问题有关:

import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.app.ActionBar.setBackgroundDrawable(android.graphics.drawable.Drawable)”

标签: android

解决方案


我通过如下设置环境解决了这个问题:

添加:

import static androidx.appcompat.app.AppCompatDelegate.FEATURE_SUPPORT_ACTION_BAR;

改变

extends Activity 

extends AppCompatActivity 

并通过以下方式转向支持包:

ActionBar bar = getSupportActionBar();

推荐阅读