Reference 从静态上下文引用的非静态方法getTag
我使用android:Tag=“1”提供了ImageView,但当我尝试使用 ImageView.getTag(1); 它显示了错误: 无法从静态上下文引用非静态方法“getTag(1)” 我能做什么?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()
如何创建非静态标记?
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)