2

これは QR コード生成のプロジェクトであり、これがコードのソースです これはここのソース です 一定のケースのエラーです 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 より前は、すべてのフィールドが final であったため、すべてのライブラリは、使用されるたびに、すべてのリソースと関連する Java コードをメイン プロジェクトと共に再コンパイルする必要がありました。ビルドが非常に遅くなるため、これはパフォーマンスに悪影響を及ぼしました。また、ソース コードが含まれていないライブラリ プロジェクトの配布を禁止し、ライブラリ プロジェクトの使用範囲を制限していました。

したがって、修正すると、スイッチが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 に答える