Ich entwickle eine Android-App für Eclipse, wenn ich Code ausprobiere
switch(String){
......
}
es gibt mir den folgenden fehler
Cannot switch on a value of type String for source level below 1.7. Only convertible int values or enum variables are permitted
also habe ich den compiler auf 1.7 geändert, dann gibt es noch einen fehler
Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tools > Fix Project Properties.
Gibt es überhaupt einen Schalter (String), der in Android-Anwendungen funktioniert?
if(){}
else if(){}
else if(){}
........
Die switch
-Anweisung für String
-Objekte ist eine neue Funktion, die in Java 1.7 eingeführt wurde. Leider erfordert Android die Version 1.6 oder 1.5. Deshalb müssen Sie solche Konstruktionen für einige Zeit vergessen.
Sie können die Verwendung von if-statement-chain vermeiden, indem Sie die Methodenkarte speichern, die für bestimmte String
: Map<String, Method>
ausgeführt wird. Sie können Method
immer mit einem Handler
-Objekt kapseln. Hier finden Sie weitere Informationen: Wie entferne ich die große if-else-if-Kette
und
Mit dem Release von API 19 KitKat können Sie dies jetzt tun !!!! Dies ist die Änderung, die Sie für Android Studio für vorhandene Projekte benötigen. Stellen Sie sicher, dass Sie JDK 1.7 oder höher und Gradle Plugin 0.6.1 oder höher verwenden
Android { compileSdkVersion 19 buildToolsVersion "19.0.0" defaultConfig { minSdkVersion 7 targetSdkVersion 19 } compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } }
Du hast keine Wahl. Sie können Switch
nicht mit Strings arbeiten (zumindest jetzt). Die folgende Nachricht stimmt ausdrücklich damit überein.
Android erfordert Compiler-Kompatibilitätsgrad 5.0 oder 6.0. Stattdessen '1.7' gefunden
Sie können dies mit den neuesten Android-Build-Tools tun. Android unterstützt Java 7 seit der API 19.
Das Beste ist, dass es auch dann funktioniert, wenn Sie Ihre minSdkVersion auf unter 19 setzen. Zitieren dieser Android-Entwicklerseite :
Beachten Sie, dass Sie minSdkVersion mit einem früheren Wert als 19 für alle Sprachfunktionen verwenden können, mit Ausnahme von try with resources. Wenn Sie try mit Ressourcen verwenden möchten, müssen Sie auch eine minSdkVersion von 19 verwenden.
Hier ist eine andere Alternative für Android mit Java 5 oder 6
public enum Command {text, image, other};
String enumTest = "text";
try{
Command command = Command.valueOf(enumTest);
}
catch(Exception e){
Log.e("Tag", "Command not found: " + enumTest);
}
switch (command){
case image:
break;
case text:
break;
}
Da ich davon ausgehe, dass die meisten Leute Android Studio mit mindestens einem Minimum von Java 7 verwenden, lautet die Antwort jetzt: Ja, Sie können Strings in Android wechseln, selbst für minSdkVersion-Versionen <19. Hier ein Beispiel wie aus der Java SE-Dokumentation entnommen :
public String getTypeOfDayWithSwitchStatement(String dayOfWeekArg) {
String typeOfDay;
switch (dayOfWeekArg) {
case "Monday":
typeOfDay = "Start of work week";
break;
case "Tuesday":
case "Wednesday":
case "Thursday":
typeOfDay = "Midweek";
break;
case "Friday":
typeOfDay = "End of work week";
break;
case "Saturday":
case "Sunday":
typeOfDay = "Weekend";
break;
default:
throw new IllegalArgumentException("Invalid day of the week: " + dayOfWeekArg);
}
return typeOfDay;
}
Die Dokumente beachten auch:
if
-else
.String.equals
verwendet.