我有两个类,A类叫做Apply,B类叫做Option 我希望A类从B类获取资源,但我收到错误
我得到的错误
Cannot make a static reference to the non-static method getResources() from the type ContextWrapper
A类的功能
public static void applyBitmap(int resourceID) {
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inScaled = true;
opt.inPurgeable = true;
opt.inInputShareable = true;
Bitmap brightBitmap = BitmapFactory.decodeResource(getResources(), resourceID, opt);
brightBitmap = Bitmap.createScaledBitmap(brightBitmap, 100, 100, false);
MyBitmap = brightBitmap;
}
以及B类资源按钮的示例
// the 34th button
Button tf = (Button) findViewById(R.id.tFour);
tf.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Apply.applyBitmap(R.drawable.tFour);
}
});
注意*:之前当函数在B类中工作时效果很好,但知道我认为我需要静态资源但是如何?我不知道
我试过了Option.getResources()
但它没有用,它给出了一个错误
答案 0 :(得分:1)
您在没有getResources()
引用的情况下访问Context
。因为这是一个静态方法,所以只能访问该类中的其他静态方法而不提供引用。
相反,您必须将Context
作为参数传递:
// the 34th button
Button tf = (Button) findViewById(R.id.tFour);
tf.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Apply.applyBitmap(v.getContext(), R.drawable.tFour); // Pass your context to the static method
}
});
然后,您必须为getResources()
:
public static void applyBitmap(Context context, int resourceID) {
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inScaled = true;
opt.inPurgeable = true;
opt.inInputShareable = true;
Bitmap brightBitmap = BitmapFactory.decodeResource(context.getResources(), resourceID, opt); // Use the passed context to access resources
brightBitmap = Bitmap.createScaledBitmap(brightBitmap, 100, 100, false);
MyBitmap = brightBitmap;
}