2013-11-27 40 views
-1

我想在我的自定義類創建的資源對象的構造函數:創建資源對象不是從活動

public class Morze { 

public Morze() { 
    Resources resources = getResources(); 
} 

}

但IntelliJ IDEA的無法解析法「getResources」。但是,代碼

Resources resources = getResources(); 

正確地在Activity的onCreate方法中工作。我能做什麼才能在我自己的班級中使用此代碼?

回答

1

正確地在Activity的onCreate方法中工作。我可以按照 的規定在自己的課程中使用這些代碼?

資源你只能從上下文檢索(每個活動從語境延伸,這是爲什麼它的工作原理沒有活動的問題),所以爲了從原料類獲得的資源,你需要通過構造例如通過上下文:

public class Morze { 

    private Context c;  

    public Morze(Context c) { 
     this.c = c; 
     Resources resources = this.c.getResources(); 
    } 
} 

或者你可以創建例如一些的init()方法,將初始化所需的對象:

public void init(Context c) { 
    this.c = c; 
    this.resources = this.c.getResources(); 
} 

但隨着構造解決方案是「比較自然」比第二種方法。

0

你不能獲得資源的物體,像這樣的類,這是不是一個活動,相反,你必須給上下文Morze類公司招聘

public class Morze { 

public Morze(Context context) { 
    Resources resources = context.getResources(); 
}