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);

这是因为,在方法或块之外只允许使用初始化器,但不允许像第二个语句那样的赋值语句。

由于您似乎依赖于getResources()成员方法的返回值,因此 bmp 不能是静态的。getResources()此外,最好仅在确定方法的返回值有意义时才初始化 bmp 。您应该从您的课程中展示更多代码以获得更好的帮助。

于 2012-10-27T13:46:05.600 回答