0
public static Bitmap bmp;
bmp = BitmapFactory.decodeResource(this.getResources(), R.drawable.nehe);

上記のコードのエラー「トークンの構文エラー ";"、、、予想される」後にセミコロンを追加しましたbmpが、それでもエラーが発生します

完全なコードは次のとおりです。

public class CustomActivity extends AndARActivity {

ARToolkit artoolkit;
CustomObject someObject;
CustomObject1 someObject1;


public static Bitmap bmp = BitmapFactory.decodeResource(this.getResources(), R.drawable.nehe);  


@Override
public void onCreate(Bundle savedInstanceState) {


    super.onCreate(savedInstanceState);
    CustomRenderer renderer = new CustomRenderer();     

    super.setNonARRenderer(renderer);

    try {
        //register a object for each marker type
        artoolkit = super.getArtoolkit();

        someObject = new CustomObject
            ("test", "androidpirate.patt", 80.0, new double[]{0,0});
        artoolkit.registerARObject(someObject);

        someObject = new CustomObject
        ("test", "andson.patt", 80.0, new double[]{0,0});
        artoolkit.registerARObject(someObject);

        someObject1 = new CustomObject1("test","andrev.patt", 80.0, new double[]{0,0});
        artoolkit.registerARObject(someObject1);

        someObject1 = new CustomObject1("test","androidpat.patt", 80.0, new double[]{0,0});
        artoolkit.registerARObject(someObject1);

    } catch (AndARException ex){
        //handle the exception, that means: show the user what happened
        System.out.println("");
    }       
    startPreview();
}


@Override
public void uncaughtException(Thread thread, Throwable ex) {
    Log.e("AndAR EXCEPTION", ex.getMessage());
    finish();
}   
}
4

4 に答える 4

1

public宣言は、関数変数ではなくクラス変数にのみ使用できます

于 2012-10-27T13:54:25.483 に答える
1

「this」を静的コンテキストで呼び出しています。「this」はクラスインスタンス オブジェクトを参照しているため、静的な方法で使用することは有効な Java 構文ではありません。さらに、 onCreate(Bundle) メソッドが呼び出されるまで、「this.getResources()」が null 以外を返すとは思わない。

次のようにする必要があります。

public static Bitmap bmp;

public void onCreate(Bundle savedInstanceState) {
    if(bmp!=null) {
        BitmapFactory.decodeResource(this.getResources(), R.drawable.nehe);
    }
...other code here
于 2012-10-27T14:24:34.390 に答える
0
public static Bitmap bmp =
    BitmapFactory.decodeResource(this.getResources(), R.drawable.nehe);

また

public static Bitmap bmp;

static {
    bmp = BitmapFactory.decodeResource(this.getResources(), R.drawable.nehe);
}
于 2012-10-27T13:45:13.363 に答える
0

これらのステートメントをメソッドに記述している場合、publicローカル変数の有効なアクセス修飾子ではありません。

クラス内のメソッドの外側にこれらのステートメントを記述している場合、それらのステートメントは次のように組み合わせる必要があります。

public Bitmap bmp = 
    BitmapFactory.decodeResource(this.getResources(), R.drawable.nehe);

これは、メソッドまたはブロックの外ではイニシャライザのみが許可され、2 番目のステートメントのような代入ステートメントは許可されないためです。

メンバーメソッドの戻り値に依存しているように見えるのでgetResources()、bmp を static にすることはできません。getResources()また、メソッドの戻り値が意味のあるものであることが確実な場合にのみ、bmp を初期化することをお勧めします。これに関してより良いヘルプを得るには、クラスからより多くのコードを表示する必要があります。

于 2012-10-27T13:46:05.600 に答える