[英]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.