0

Apply というクラス A と Option というクラス B の 2 つのクラスがあります。クラス 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ます。これは静的メソッドであるため、参照を提供せずにそのクラス内の他の静的メソッドにのみアクセスできます。

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;
}
于 2012-08-16T02:25:05.753 に答える