我刚刚开始使用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()方法的错误。
答案 0 :(得分:2)
我认为在这种情况下你不应该让你的处理程序保持静态。实际上,非静态处理程序确实会导致内存泄漏,但总是如此。如果您刚开始进行Android开发,则可能不会遇到导致内存泄漏的情况。
当您在销毁类之前向处理程序发送未处理的消息时,问题通常会发生。换句话说,对于发生内存泄漏,必须发生以下情况:
在这种情况下会出现内存泄漏。但我非常怀疑这种情况会发生。
但是,要回答您的问题,一个简单的方法是将以下内容添加到您的课程中:
static MyClass instance;
并在构造函数中:
MyClass.instance = this;
请注意这一点,当你得到同一个类的多个实例时,这将永远不会有效,所以你可能想看看单身。
答案 1 :(得分:0)
您需要具有contentView的Activity和实例,您可以从中获取View。
但是......看看你的代码,我认为你应该直接传递TextView实例。
希望这会有所帮助。