Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Codificación de Android con switch (String)

Estoy desarrollando una aplicación para Android en eclipse, cuando intento un código como

switch(String){ ...... } 

Me da el siguiente error

  • Android WIFI Cómo detectar cuándo está disponible una conexión WIFI específica
  • Cómo compilar APK desde la línea de comandos?
  • En Android, realice una solicitud POST con datos de formulario codificados en URL sin utilizar UrlEncodedFormEntity
  • AudioRecord de Android vs MediaRecorder para la grabación de audio
  • RequestFeature () debe ser llamado antes de agregar contenido en Fragment
  • ¿Cómo puedo arreglar el error "Error al sincronizar la reg. Vcpu"?
  •  Cannot switch on a value of type String for source level below 1.7. Only convertible int values or enum variables are permitted 

    Así que cambié el compilador a 1.7, entonces él me da otro error

     Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tools > Fix Project Properties. 

    Por lo tanto, ¿hay alguna manera de dejar que el interruptor (String) funciona en la aplicación Android? O no tengo otra opción que usar

     if(){} else if(){} else if(){} ........ 

  • Cómo utilizar isInEditMode () para ver el diseño con la vista personalizada en el editor
  • Kotlin - Error intermitente de "archivo de clase incorrecta"
  • Habilitar teclado de correo electrónico en android para el tipo de entrada de correo electrónico
  • Opciones gratuitas de Corona SDK
  • ¿Debería estar lleno el archivo xml del contenido de la copia de seguridad completa o no incluirlo en todos?
  • ¿Cómo agregar la vista inferior a una disposición de coordinador con el paginador de la visión?
  • 6 Solutions collect form web for “Codificación de Android con switch (String)”

    switch en objetos String es una nueva característica introducida en Java 1.7. Desafortunadamente Android requiere la versión 1.6 o 1.5. Es por eso que hay que olvidar por algún tiempo sobre tales construcciones.

    Puede evitar el uso de if-statements-chain almacenando el mapa de métodos que se ejecutará para ciertos String : Map<String, Method> . Siempre se puede encapsular el Method con algún objeto Handler . Mira aquí para más información: Cómo quitar la cadena if-else-if grande

    y

    Por qué no puedo cambiar en una cadena

    Con el lanzamiento de API 19 KitKat ahora puede hacer esto !!!! Este es el cambio que necesita para Android Studio para los proyectos existentes. Asegúrese de que está utilizando JDK 1.7 o posterior y el complemento Gradle 0.6.1 o posterior

     android { compileSdkVersion 19 buildToolsVersion "19.0.0" defaultConfig { minSdkVersion 7 targetSdkVersion 19 } compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } } 

    No tienes elección. Usted no puede trabajar Switch con cuerdas (al menos por ahora). El mensaje siguiente lo conforma explícitamente.

    Android requiere el nivel de cumplimiento del compilador 5.0 o 6.0. Encontrado '1.7' en su lugar

    Puede hacerlo con las últimas herramientas de compilación android. Android comenzó a soportar Java 7 característica desde la API 19.

    La mejor parte es que funcionará aunque establezca su minSdkVersion por debajo de 19. Citando esta página de desarrollo de android :

    Tenga en cuenta que puede utilizar minSdkVersion con un valor anterior a 19, para todas las características de idioma, excepto tratar con recursos. Si quieres usar try con recursos, necesitarás también usar una minSdkVersion de 19.

    Aquí hay otra alternativa para Android con java 5 o 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; } 

    Dado que supongo que la mayoría de la gente está usando Android Studio con al menos un mínimo de Java 7, entonces la respuesta es, sí, puedes cambiar Strings en Android , incluso para las versiones de minSdkVersion <19. He aquí un ejemplo de cómo hacerlo, Tomado de la documentación de Java SE :

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

    Los documentos también señalan:

    • Usando la conmutación de cadena es generalmente más rápido que encadenado ifelse .
    • Es como si cada caso estuviera usando String.equals .
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.