小编典典

设置LayoutParams时发生NullPointerException

java

我想以编程方式添加一个按钮,也应该设置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;

阅读 178

收藏
2020-11-23

共1个答案

小编典典

由于您以编程方式创建Button,b因此不会设置任何布局参数。因此,您需要像这样手动设置它们:

ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
b.setLayoutParams(params);

或者至少在更改参数之前检查参数是否不为null

    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);
2020-11-23