我有两个图像,一个红灯和一个绿灯。我有一个自定义 ListView,我想在列表项处于非 Activity 状态时显示红灯,在 Activity 时显示绿灯。按下时激活列表项。

这是我的代码

行.xml

<ImageView
    android:id="@+id/iconLight"
    android:src="@drawable/light_off"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

主程序
ImageView iconLight = (ImageView)findViewById(R.id.iconLight);
iconLight.setImageResource(R.drawable.light_on);

我得到一个 NullPointerException 执行设置图像资源的行。所以我做了一些测试,我删除了 XML 文件中设置 src 的行,并尝试在主类中设置它。仍然是 NPE。所以我尝试不更改资源,而只是更改 alpha。还是NPE。

我不确定我做错了什么。 light_off.pnglight_on.png 文件都在 res/drawable-ldpi 中,当我在 XML 中指定它们时,它们中的任何一个都可以工作。但是我尝试对主文件中的 iconLight 进行的任何更改都会导致此 NPE。有任何想法吗?

最佳答案

获得 NPE 的唯一方法...

iconLight.setImageResource(R.drawable.light_on);

用于使 iconLight 为空。因此,您的 findViewById 失败了。在调用 findViewById 之前是否设置了布局?你确定 R.id.iconLight 在 Activity 的根布局中吗?

10-07 18:16