2

这是一个二维码生成项目,这是代码的来源 这是 这里的来源一个常量案例的错误我知道它必须放入 If-else 但我不知道在这个项目中任何人都可以提供帮助我 ?!

//That is a QR code generator project`enter code here`
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
          case R.id.button1://<--- is the error .. I can't make it If-else statement
           EditText qrInput = (EditText) findViewById(R.id.QR);
           String qrInputText = qrInput.getText().toString();
           Log.v(LOG_TAG, qrInputText);

           //Find screen size
           WindowManager manager = (WindowManager) getSystemService(WINDOW_SERVICE);
           Display display = manager.getDefaultDisplay();
           Point point = new Point();
           display.getSize(point);
           int width = point.x;
           int height = point.y;
           int smallerDimension = width < height ? width : height;
           smallerDimension = smallerDimension * 3/4;

           //Encode with a QR Code image
           QREncoder qrCodeEncoder = new QREncoder(qrInputText, 
                     null, 
                     Contents.Type.TEXT,  
                     BarcodeFormat.QR_CODE.toString(), 
                     smallerDimension);
           try {
            Bitmap bitmap = qrCodeEncoder.encodeAsBitmap();
            ImageView myImage = (ImageView) findViewById(R.id.imageView1);
            myImage.setImageBitmap(bitmap);

           } catch (WriterException e) {
            e.printStackTrace();
           }


           break;

           // More buttons go here (if any) ...

          }
         }
    }
4

1 回答 1

6

看看官方的博客文章:

http://tools.android.com/recent/switchstatementconversion

http://tools.android.com/tips/non-constant-fields

基本上,图书馆项目中的资源常量不再是“最终的”。从 ADT 网站:

换句话说,常量在库项目中不是最终的。原因很简单:当组合多个库项目时,字段的实际值(必须是唯一的)可能会发生冲突。在 ADT 14 之前,所有字段都是最终字段,因此,所有库在使用时都必须将其所有资源和相关 Java 代码与主项目一起重新编译。这对性能不利,因为它使构建速度非常慢。它还阻止了不包含源代码的库项目的分发,限制了库项目的使用范围。

所以如果你修复它会将 switch 转换为 if 和 else ......

int id = view.getId();
if (id == R.id.button1) {
    action1();
} else if (id == R.id.button2) {
    action2();
} else if (id == R.id.button3) {
    action3();
}
于 2013-07-25T05:39:01.623 回答