在LinearLayout上调用setBackground时出现NullPointerException

时间:2016-11-04 08:48:55

标签: android android-layout android-linearlayout

我为LinearLayout背景创建了一个Drawable资源文件。我使用

MainActivity中设置了Drawable
Drawable d = getResources().getDrawable(R.drawable.theme_default_bg);
layoutBackground.setBackground(d);

layoutBackgroundLinearLayout。但是,当我运行它时,它返回NullPointerException。我该如何解决这个问题?

修改  我在main.xml文件中设置了xml后台,并且它工作正常。当我尝试从MainActivity.java设置背景时出现此错误

3 个答案:

答案 0 :(得分:1)

试试这个......在你的情况下你还没有初始化layoutBackground ..

 RelativeLayout layoutBackground =(RelativeLayout)findViewById(R.id.background);

Drawable d = getResources().getDrawable(R.drawable.theme_default_bg);

layoutBackground.setBackgroundResource(d);

答案 1 :(得分:1)

只需使用:

layout.setBackgroundResource(R.drawable.theme_default_bg);

而不是尝试将资源转换为可绘制的。

答案 2 :(得分:0)

我发现了错误。对不起,我尝试setBackground的布局是在另一个布局文件(activity_main.xml)中。所以我使用LayoutInflater

LayoutInflater inflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View mainView = inflater.inflate(R.layout.activity_main, null);

layoutBackground = (LinearLayout)mainView.findViewById(R.id.layout_bg);

现在错误已经解决了。我很抱歉,我浪费你的时间。我很抱歉。