我在点击列表视图中的列表项时尝试更改图像。这是人们说要使用的,但它不起作用。日志文件说setimageresource行有一个空指针异常。有什么想法吗?
listview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
if(arg2 == 0){
image.setImageResource(R.drawable.lighton);
}
else
image.setImageResource(R.drawable.lightoff);
}
});
logcat的
ERROR/AndroidRuntime(712): Uncaught handler: thread main exiting due to uncaught exception
ERROR/AndroidRuntime(712): java.lang.NullPointerException
ERROR/AndroidRuntime(712): at com.Sonny.HCIProject.LightSetting$1.onItemClick(LightSetting.java:42)
ERROR/AndroidRuntime(712): at android.widget.AdapterView.performItemClick(AdapterView.java:283)
ERROR/AndroidRuntime(712): at android.widget.ListView.performItemClick(ListView.java:3132)
ERROR/AndroidRuntime(712): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1620)
ERROR/AndroidRuntime(712): at android.os.Handler.handleCallback(Handler.java:587)
ERROR/AndroidRuntime(712): at android.os.Handler.dispatchMessage(Handler.java:92)
ERROR/AndroidRuntime(712): at android.os.Looper.loop(Looper.java:123)
ERROR/AndroidRuntime(712): at android.app.ActivityThread.main(ActivityThread.java:3948)
ERROR/AndroidRuntime(712): at java.lang.reflect.Method.invokeNative(Native Method)
03-20 03:54:48.702: ERROR/AndroidRuntime(712): at java.lang.reflect.Method.invoke(Method.java:521)
03-20 03:54:48.702: ERROR/AndroidRuntime(712): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
03-20 03:54:48.702: ERROR/AndroidRuntime(712): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
03-20 03:54:48.702: ERROR/AndroidRuntime(712): at dalvik.system.NativeStart.main(Native Method)
Drawable文件夹只有图片文件
答案 0 :(得分:0)
什么是图像?它在哪里?它被初始化了吗?请更多列表。
也许你应该尝试
YOUR_ACTIVITY_NAME.this.image
或者可能不是
答案 1 :(得分:0)
如果image是列表视图中的项目,那么你必须这样做:
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
ImageView img=(ImageView)arg1.findViewById(R.id.image);
img.setImageDrawable(getResourses().getDrawable(R.drawable.drawable1));
}
});
如果它不是listview中的项目,那么如果已实例化
,则代码应该有效答案 2 :(得分:0)
堆栈跟踪显示问题出在第42行。如果您100%确定这是第42行,
image.setImageResource(R.drawable.lighton);
然后好的。如果不是,请将第42行作为评论发布。
所以,假设那是第42行,
要么
在顶部检查您的导入 - 确保它是import my.project.R;
而不是import android.R;
image
为空。你实例化它吗?
基本上,您要设置的内容或尝试设置的位置为null。一个或另一个,或者如果你运气不好,两者都可以。