不是从Activity创建Resources对象

时间:2013-11-27 13:12:26

标签: java android intellij-idea

我尝试在构造函数的自定义类中创建Resources对象:

    public class Morze {

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

}

但是Intellij的想法无法解决方法“getResources”。但是,代码

Resources resources = getResources();

正确使用Activity的onCreate方法。为了在我自己的班级中使用此代码,我该怎么办?

2 个答案:

答案 0 :(得分:1)

  

正确使用Activity的onCreate方法。我能做些什么呢   在我自己的班级中使用这段代码?

您只能从Context检索的资源(每个Activity都从Context扩展,这就是它在Activities中没有问题的原因)所以为了从原始类获取资源,您需要通过构造函数传递Context,例如:

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();
}

但是使用构造函数的解决方案比第二种方法“更自然”

答案 1 :(得分:0)

你不能在一个不是Activity的类中获得这样的Resources对象,相反,你必须为Morze类提供上下文 -

public class Morze {

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