设置 LayoutParams 时出现 NullPointerException [重复]
Posted
技术标签:
【中文标题】设置 LayoutParams 时出现 NullPointerException [重复]【英文标题】:NullPointerException while setting LayoutParams [duplicate] 【发布时间】:2016-07-20 07:29:35 【问题描述】:我想以编程方式添加一个按钮,也应该设置 LayoutParams。 不幸的是,该应用程序给出了一个例外:
java.lang.NullPointerException:尝试写入字段'int android.view.ViewGroup$LayoutParams.height' 在空对象引用上
我不知道,为什么。你可以帮帮我吗? 这是我的代码。
Button b = new Button(getApplicationContext());
b.setText(R.string.klick);
ViewGroup.LayoutParams params = b.getLayoutParams();
params.height = ViewGroup.LayoutParams.MATCH_PARENT;
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
【问题讨论】:
【参考方案1】:由于您正在以编程方式创建 Button,b
不会设置任何布局参数。所以你需要像这样手动设置它们:
ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
b.setLayoutParams(params);
或者至少在更改参数之前检查参数是否不为空
ViewGroup.LayoutParams params = b.getLayoutParams();
if (params != null)
params.width= ViewGroup.LayoutParams.MATCH_PARENT;
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
else
params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
【讨论】:
以上是关于设置 LayoutParams 时出现 NullPointerException [重复]的主要内容,如果未能解决你的问题,请参考以下文章
设置 mMediaRecorder.setProfile 时出现 IllegalStateException