java - 设置 LayoutParams 时出现 NullPointerException

标签 java android android-layout

<分区>

我想以编程方式添加一个按钮,也应该设置 LayoutParams。 不幸的是,该应用程序出现异常:

java.lang.NullPointerException: Attempt to write to field 'int android.view.ViewGroup$LayoutParams.height' on a null object reference

我不知道为什么。你可以帮帮我吗? 这是我的代码。

 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;

最佳答案

由于您以编程方式创建 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);

关于java - 设置 LayoutParams 时出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36340268/

相关文章:

java - Android - 动态设置按钮的布局宽度

android - 有什么方法可以使按钮上的图像自动调整大小以适合屏幕?

Android - 自定义标题栏

java - AWS : how to fix S3 event replacing space with '+' sign in object key names in json

java - 如何在我的 Java 程序中实现背景音乐?

android - 如何在 android cmake 项目中包含 <glib.h>

android - 如何以编程方式断开与所选路线的连接?

java - 如何检索 COUNT() SUM() AVG() MIN() MAX() 语句的结果集?

java - Hibernate findByexample 问题

android - 如何给expandablelistView的所有childview设置背景?