[英]How to reference non-static method 'findViewById' from a static context?
我刚刚开始进行android开发,现在我被困在这里:
static Handler h = new Handler()
{
@Override
public void handleMessage(Message msg) {
TextView buttonmain = (TextView)findViewById(R.id.buttonmainid);
if(buttonmain.getText()=="Text1")
buttonmain.setText("Text2");
else
buttonmain.setText("Text1");
}
};
这给出了有关在静态上下文中访问findViewById()方法的错误。
我认为在这种情况下,您不应该将处理程序设为静态。 确实,非静态处理程序的确会导致内存泄漏,但并非总是如此。 如果您刚刚开始Android开发,则可能不会遇到导致内存泄漏的情况。
当您将消息发送到处理程序时,在销毁该类之前未对其进行处理的问题通常会出现此问题。 换句话说,要发生内存泄漏,必须发生以下情况:
在这种情况下,会发生内存泄漏。 但是我非常怀疑这会发生。
但是,要回答您的问题,一种简单的方法是在您的班级中添加以下内容:
static MyClass instance;
并在构造函数中:
MyClass.instance = this;
但是请务必小心,当您获得同一类的多个实例时,这将永远无法正常工作,因此您可能需要研究单例。
您需要在要获取View的位置使用带有contentView的Activity实例。
但是...看您的代码,我认为您应该直接传递TextView实例。
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.