从非上下文类访问Drawable资源

时间:2010-11-07 13:59:07

标签: android resources nullpointerexception drawable

我正在定义一个在对象中设置Drawable属性的类。问题是我无法访问getResource().getDrawable(int resourceId)方法,除非我有一些Context。 我所做的是向该类发送一个活动实例(让我们称之为“行为”),然后我做了:

act.getResources().getDrawable(R.drawable.whellchair)

但是,在执行该行时会抛出NullPointerException

何时想到如何实现这个目标?

2 个答案:

答案 0 :(得分:1)

我发现了问题! 我正在使用一个单身人士,我把这条线路以静态方式访问“行为”......我多么愚蠢......

对不起,谢谢Juhani的评论:)

答案 1 :(得分:0)

将应用程序上下文传递给类的构造函数。在主应用程序类中,如果需要生命周期感知上下文,则通过调用getApplication()方法获取上下文;如果需要与当前进程关联的上下文,则调用getApplicationContext()

示例:

private Context ctx = getApplication();

... some code ...

MyClass myClass = new MyClass(ctx);

你的类的构造函数当然必须相应地处理上下文(即将Context类型的私有成员设置为传递的值),如下所示。

private Context ctx = null;

public MyClass(ctx) {
    this.ctx = ctx;
}

然后您可以根据需要使用上下文。