我给了我的ImageView与android:Tag =" 1"但是当我试图找到这个视图时 ImageView.getTag(1); 它显示错误: 非静态方法" getTag(1)不能从静态上下文中引用。
我该怎么办? 如何制作非静态标签?
答案 0 :(得分:0)
ImageView
是一个班级。如果您创建ImageView
的实例,请说使用
ImageView myImageView = new ImageView();
然后,您可以使用getTag()
非静态地引用myImageView.getTag()
。
如果您坚持使用ImageView.getTag()
,则getTag()
和tag
都应声明为静态。这意味着对于所有tag
个实例,任何时候都只有ImageView
的一个值。
那只是基本的java。
在Android中,已有getTag()
,但不在ImageView
但在View
。 ImageView
继承自View
,所以无论如何你都会在那里得到它。
ImageView
:
http://developer.android.com/reference/android/widget/ImageView.html
这里记录了 View
:
http://developer.android.com/reference/android/view/View.html
android:Tag
是View
的XML属性,在此处记录:
http://developer.android.com/reference/android/view/View.html#attr_android:tag
正如我所提到的,getTag()
存在于View
而不是ImageView
,但由于ImageView
继承自View
,所有ImageView
的实例都会拥有它。
您可以在此处查看getTag()
源代码:
这最终表明getTag()
实际上不是static
所以应该通过实例引用,而不是字面上引用View.getTag()
。
文档管理员有时会告诉您以实际静态方式引用非静态方法。他们假设你知道不要从字面上理解他们并且他们并不总是正确的。在他们的辩护中,他们不知道你为你的实例命名了什么,所以他们不知道还有什么可以称之为。
yourView.getTag()
会更正确,但过了一会儿就会让人烦恼。
你确实说过你正试图找到这个观点"。在您getTag()
赢得帮助之后,您可以参考该视图。您已经知道自己的代码为1
。你不需要再次被告知。您需要找到标记为1
的视图。
在这种情况下,请看这里: