- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在使用我的 Android 应用程序的一段代码时遇到了一些问题。尝试设置 ImageView
对象的背景时,我不断收到 NullPointerException
。
代码如下:
public View getView(int position, View view, ViewGroup parent) {
ImageView imageView;
if (view == null) {
imageView = new ImageView(mContext);
} else {
imageView = (ImageView) view;
}
imageView.setTag(position);
return imageView;
}
private OnItemClickListener itemClickListener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
ImageView imageView;
//Variable i, here, is from a for loop.
imageView = (ImageView)v.findViewWithTag(i);
//I get a NullPointerException at the next line, "Log.d"
Log.d("View 1", imageView.toString());
//If I get rid of the "Log.d" line above,
//the NullPointerException occurs on the next line
imageView.setBackgroundColor(Color.BLUE);
imageView = (ImageView)v.findViewWithTag(position);
Log.d("View 2", imageView.toString());
imageView.setBackgroundColor(Color.BLUE);
};
}
我怀疑我的代码有问题是因为我传递给 setTag()
方法的参数和传递给 findViewWithTag()
方法的参数.如果有人可以向我展示如何设置标签和使用标签查找 View 的示例,我将不胜感激。
感谢您的宝贵时间。
编辑:这是错误日志。我不确定放在哪里,所以我会放在这里。
05-04 21:47:24.314: ERROR/AndroidRuntime(335): FATAL EXCEPTION: main
05-04 21:47:24.314: ERROR/AndroidRuntime(335): java.lang.NullPointerException
05-04 21:47:24.314: ERROR/AndroidRuntime(335): at com.jacksmartie.PhotoMem.MainActivity$1.onItemClick(MainActivity.java:79)
05-04 21:47:24.314: ERROR/AndroidRuntime(335): at android.widget.AdapterView.performItemClick(AdapterView.java:284)
05-04 21:47:24.314: ERROR/AndroidRuntime(335): at android.widget.AbsListView$PerformClick.run(AbsListView.java:1696)
05-04 21:47:24.314: ERROR/AndroidRuntime(335): at android.os.Handler.handleCallback(Handler.java:587)
05-04 21:47:24.314: ERROR/AndroidRuntime(335): at android.os.Handler.dispatchMessage(Handler.java:92)
05-04 21:47:24.314: ERROR/AndroidRuntime(335): at android.os.Looper.loop(Looper.java:123)
05-04 21:47:24.314: ERROR/AndroidRuntime(335): at android.app.ActivityThread.main(ActivityThread.java:4627)
05-04 21:47:24.314: ERROR/AndroidRuntime(335): at java.lang.reflect.Method.invokeNative(Native Method)
05-04 21:47:24.314: ERROR/AndroidRuntime(335): at java.lang.reflect.Method.invoke(Method.java:521)
05-04 21:47:24.314: ERROR/AndroidRuntime(335): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-04 21:47:24.314: ERROR/AndroidRuntime(335): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-04 21:47:24.314: ERROR/AndroidRuntime(335): at dalvik.system.NativeStart.main(Native Method)`
最佳答案
这一行是你的罪魁祸首的一部分:
com.jacksmartie.PhotoMem.MainActivity$1.onItemClick(MainActivity.java:79)
这里打个断点:
Log.d("View 1", imageView.toString());
看看您的 imageview
引用对象 [imageView] 是什么,我预计它是 null,因为您没有正确链接它。
如果为null,说明你的引用 View 链接不对。如果是这种情况,那么您需要像这样正确分配它:
Button b = findViewById(R.id.Button01);
但是;因为您使用的似乎是 ListView
,所以它的作用略有不同。这意味着你拉 View 的方式是错误的,做一些研究,应该找到一些东西来帮助解决这个问题!
关于Android:如何使用View的setTag、getTag和findViewWithTag方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5890072/
在一个 Android 应用程序中,我有 4 个按钮,我分别为其指定了标签 1、2、3 和 4,如果匹配(或不匹配)一个,我想使用 for 循环更改每个按钮中的文本我的代码中的某个值,for 循环中的
我查看了 android 平台框架源代码,找到了它的实现 here .这是代码 fragment : public final View findViewWithTag(Object tag) {
我正在使用 PagerAdapter 并想使用 findViewWithTag 方法,但它总是返回 null。 在 instantiateItem 中,我像这样实例化我的页面 View public
我曾经使用 view.setTag(t1); 为 View 设置标签,然后使用 parent.findViewWithTag(t1); 获取 View ,它正确返回. 我现在需要为我的 View 设置
在我的类的 onCreate() 方法中,我制作了一个按钮网格,并为它们提供标签以识别它们,例如: button.setTag("one four"); 这工作正常。现在我想在一个方法中创建一个新的临
当编写一个有很多 View (因此有很多 id)的大型应用程序时, 哪个是更好的做法或更好的性能; 有很多 ID 并使用 findViewById(X) 找到它们, 或者有多个标签并使用 findVi
在我的 Activity 中有一个像记分牌一样的表格,所以我使用 findViewWithTag 来找到我想要更快编辑的 View 并使我的代码更清晰,但它返回 null。 错误是: Caused b
当我在 onCreate() 中调用 findViewWithTag() 时出现错误 "The method findViewWithTag(String) is undefined for the
引用以下内容 answer ,我试图取消实现我目前在项目中所做的事情,即使用以下代码: @Override public int getItemPosition(Object object) {
我是一名优秀的程序员,十分优秀!