如何从非Activity类访问drawable资源

8

我处于这样一种情况:我必须从一个非活动类中使用我的应用程序的drawable文件夹。我尝试使用以下代码与父活动:

ParentActivity pa = new ParentActivity();
Drawable d = pa.getResources()..getDrawable(R.drawable.icon);`

但这会返回一个 NullPointerException。我该怎么做才能实现这个功能呢?
2个回答

15

将上下文对象作为参数传递给非Activity类的构造函数。

然后使用该上下文对象获取资源。

示例

public class MyClass {
  Context context;
  public MyClass(Context context) {
      this.context = context;
  }

  public void urMethod() {
    Drawable drawable=context.getResources().getDrawable(R.drawable.icon);
    // use this drawable as u need
  }
}

1
是我自己的问题还是“R”或者(在Java中被称为资源)被导入到类中,所以这不是通用的? - Léon Pelletier
2
请注意,从API 22开始,获取可绘制资源的正确方式为: Drawable drawable = ContextCompat.getDrawable(context, R.drawable.icon) - Jonas Pedersen

4
import com.(package-name).R;

然后您就可以访问所有您的可绘制资源,比如 R.drawable.icon。

这将访问资源作为整数,而不是实际的可绘制对象。 - Eduardo Reis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接