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

Reference 从静态上下文引用的非静态方法getTag,reference,static,Reference,Static,我使用android:Tag=“1”提供了ImageView,但当我尝试使用 ImageView.getTag(1); 它显示了错误: 无法从静态上下文引用非静态方法“getTag(1)” 我能做什么? 如何创建非静态标记?ImageView是一个类。如果创建ImageView的实例,请使用 ImageView myImageView=newimageview(); 然后可以使用myImageView.getTag()非静态地引用getTag() 如果坚持使用ImageView.getTag()

我使用android:Tag=“1”提供了ImageView,但当我尝试使用 ImageView.getTag(1); 它显示了错误: 无法从静态上下文引用非静态方法“getTag(1)”

我能做什么?
如何创建非静态标记?

ImageView
是一个类。如果创建
ImageView
的实例,请使用

ImageView myImageView=newimageview();

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

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

这只是基本的java

在Android中已经有了一个
getTag()
,但不是在
ImageView
中,而是在
View
ImageView
中继承自
View
,所以你还是可以得到它

ImageView
记录于此:

视图
记录于此:

android:Tag
View
的一个XML属性,本文对此进行了说明:

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

您可以在这里看到
getTag()
源代码:

这最终表明,
getTag()
实际上不是静态的,因此应该通过实例引用,而不是字面上的
View.getTag()

文档编制人员有时会告诉您以一种静态的方式引用非静态方法。他们认为您知道不要按字面理解它们,而且它们并不总是正确的。为他们辩护,他们不知道您将实例命名为什么,所以他们不知道该如何称呼它

yourView.getTag()
会更正确,但过了一段时间就会变得令人讨厌

您确实说过您正在尝试“查找此视图”。在获得对所查找视图的引用之前,
getTag()
对您没有帮助。您已经知道您的标记是
1
。无需再次告知您。您需要找到指向具有标记
1
的视图的方法

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


您的实际代码是什么?什么语言?什么框架?您的问题是自描述的(您正在从非statc方法调用静态方法)但这并没有告诉我们如何解决它。@Jeroenmoster sry,它的Android Studio-JavaMethod方法显然必须定义为静态的。或者必须从非静态上下文调用它,即
ImageView view=new ImageView();…view.getTag(1)