Switch - case-Ausdrücke müssen Konstante Ausdrücke, kann ich nicht machen, die if-else-Anweisung
Dies ist ein Projekt der QR-Code-Generierung und dies ist die Quelle des Codes
Das ist die Quelle
hier ein Fehler der Konstanten Fall
Ich weiß, dass es muss im If-else, aber ich weiß nicht, wie in diesem Projekt jemand der mir helfen kann ?!
//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) ...
}
}
}
- ich denke, dass die switch-case funktionieren sollte wie diese..was genau ist deine Frage?
- Der code sieht gut aus, hat die ID "button1" existieren? vielleicht war es ein Tippfehler, wenn der button erstellt wurde
- wussten Sie, ändern Sie die Schaltflächen-id?
- Die Fall-switch-Anweisung hat einen Fehler und dieses "Wie der ADT 14, Ressourcen-Felder können nicht verwendet werden, die als switch-Case-Anweisungen. Das aufrufen dieses Update um weitere Informationen zu erhalten." erscheint mir-und es ist auch als fix-Optionen ( Migrate android code ) Wenn ich suchte fand ich, dass ich austauschen müssen, die Fall-Schalter mit If-else .. aber ich weiß nicht, wie ich das nicht verstehen codde gut, aber ich brauche diese, um einen QR-Code ..
- Sie können auch schnell dieses problem beheben, indem Sie den cursor auf dem switch-Schlüsselwort und drücken Sie Strg-1. ADT atomatically konvertieren Sie die case-Anweisungen if-else-Anweisungen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werfen Sie einen Blick auf den offiziellen blog-post dazu:
http://tools.android.com/recent/switchstatementconversion
http://tools.android.com/tips/non-constant-fields
Grundsätzlich Ressourcen-Konstanten in der library-Projekte sind nicht mehr "final". Aus dem ADT-Site:
In anderen Worten, die Konstanten sind nicht endgültig in ein library-Projekt. Der Grund dafür ist einfach: Wenn mehrere library-Projekten kombiniert werden, um die tatsächlichen Werte der Felder (die eindeutig sein muss) kollidieren könnten. Vor der ADT 14, alle Felder waren endgültig, so als Ergebnis, dass alle Bibliotheken haben musste, die alle Ihre Ressourcen und zugehörige Java-code kompiliert, zusammen mit dem wichtigsten Projekt, wenn Sie verwendet wurden. Das war schlecht für die performance, da machte er baut sehr langsam. Es auch verhindert das verteilen Bibliothek Projekte, die nicht enthalten den source-code, die Begrenzung der Nutzung Umfang der-Bibliothek-Projekte.
also, wenn Sie das Problem beheben konvertieren, wechseln Sie in den if und else...