当前位置: 首页 > 面试题库 >

设置LayoutParams时发生NullPointerException

严元白
2023-03-14
问题内容

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

问题答案:

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


 类似资料:
  • 由于某些原因,ImagePanel的大小与JFrame的大小不相同(如这里所示:http://prntscr.com/l8d98i)。当我将ImagePanel的大小设置为JFrame的大小时,我的组件都会调整大小。这是为什么?如图所示:http://prntscr.com/l8d9ka

  • 问题内容: 线程启动后,如果该线程的引用设置为,那么该线程将如何处理?会停止吗?它有资格获得GC吗? 像这样: 问题答案: 实时线程将继续运行,即使其引用设置为null。 就像任何其他对象一样,当没有任何引用时,它就有资格使用GC。棘手的一点是,即使您的程序未保留一个 正在运行的线程 在ThreadGroup中的引用,因此 也永远不会 对 正在运行的线程进行GC。

  • 我试图将我的Spring Boot应用程序连接到PostGresSql数据库。但每次我得到错误。 我的文件如下所示:- ssl服务器。jks文件位于src/main/resources文件夹中。我正在阅读下面的控制台台面:-

  • 从业务需求逻辑和内存的角度,尽可能的设置key存活时间。

  • 我很难从一个外部工具发送一个成绩到谷歌课堂。我可以发送等级(assignedGrade和draftGrade)并且可以更改它们。我看到了我的变化,在返回的学生提交,在学生提交的历史,但我永远不能说服教室的作业已经“评分”或“完成”。以教师的身份审视学生的工作,我看到以下几点: 我储存等级的所有尝试都在那里,但仍然是“未分级”。下面是我用来设置等级的代码: 这基本上起作用了--新的等级出现了,一个新

  • 使用指南 - 统计设置 - 概述 - 设置更改后的生效时间 百度统计中的设置项在设置或更改后,一般20分钟后生效。