从静态上下文引用的非静态方法getTag

时间:2015-02-22 12:48:56

标签: reference static

我给了我的ImageView与android:Tag =" 1"但是当我试图找到这个视图时 ImageView.getTag(1); 它显示错误: 非静态方法" getTag(1)不能从静态上下文中引用。

我该怎么办? 如何制作非静态标签?

1 个答案:

答案 0 :(得分:0)

ImageView是一个班级。如果您创建ImageView的实例,请说使用

ImageView myImageView = new ImageView();

然后,您可以使用getTag()非静态地引用myImageView.getTag()

如果您坚持使用ImageView.getTag(),则getTag()tag都应声明为静态。这意味着对于所有tag个实例,任何时候都只有ImageView的一个值。

那只是基本的java。

在Android中,已有getTag(),但不在ImageView但在ViewImageView继承自View,所以无论如何你都会在那里得到它。

这里记录了

ImageView

http://developer.android.com/reference/android/widget/ImageView.html

这里记录了

View

http://developer.android.com/reference/android/view/View.html

android:TagView的XML属性,在此处记录:

http://developer.android.com/reference/android/view/View.html#attr_android:tag

正如我所提到的,getTag()存在于View而不是ImageView,但由于ImageView继承自View,所有ImageView的实例都会拥有它。

您可以在此处查看getTag()源代码:

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.0.2_r1/android/view/View.java#View.getTag%28%29

这最终表明getTag()实际上不是static所以应该通过实例引用,而不是字面上引用View.getTag()

文档管理员有时会告诉您以实际静态方式引用非静态方法。他们假设你知道不要从字面上理解他们并且他们并不总是正确的。在他们的辩护中,他们不知道你为你的实例命名了什么,所以他们不知道还有什么可以称之为。

yourView.getTag()会更正确,但过了一会儿就会让人烦恼。

你确实说过你正试图找到这个观点"。在您getTag()赢得帮助之后,您可以参考该视图。您已经知道自己的代码为1。你不需要再次被告知。您需要找到标记为1的视图。

在这种情况下,请看这里:

Find all views with tag?