我正在定义一个在对象中设置Drawable属性的类。问题是我无法访问getResource().getDrawable(int resourceId)
方法,除非我有一些Context
。
我所做的是向该类发送一个活动实例(让我们称之为“行为”),然后我做了:
act.getResources().getDrawable(R.drawable.whellchair)
但是,在执行该行时会抛出NullPointerException
。
何时想到如何实现这个目标?
答案 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;
}
然后您可以根据需要使用上下文。