来自不同类的Android getResources

时间:2012-08-16 02:12:59

标签: android resources bitmap

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

1 个答案:

答案 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;
}