0

我有两个类,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()但它没有用,它给出了一个错误

4

1 回答 1

2

您正在访问getResources()而没有引用Context. 因为这是一个静态方法,所以您只能访问该类中的其他静态方法,而无需提供引用。

相反,您必须将 theContext作为参数传递:

// 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;
}
于 2012-08-16T02:25:05.753 回答