Recientemente agregué otro elemento del menú a una aplicación java de Android y me sorprendió que Eclipse dijera esa variable del caso anterior: el corte no era local (así que acabo de agregar un sufijo para salir adelante).¿Por qué las variables no son locales en las sentencias de caso?
Estoy un poco confundido ya que en mi opinión, el 1er conjunto de casos: break no se ejecutaría en absoluto si se eligió la 2ª opción. ¿Podría alguien explicar mi pensamiento defectuoso por favor?
case R.id.menuDebugMode:
debugMode = !debugMode;
if (debugMode){
Toast.makeText(mainActivity.this, "Debug Mode on - NOT TO BE USED WHILST DRIVING", Toast.LENGTH_LONG).show();
} else {
tvDebug.setText("");
tvInfo.setText("");
}
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("debugMode", debugMode);
editor.commit();
break;
case R.id.menuSpeedMode:
speedSignMode = !speedSignMode;
if (speedSignMode){
Toast.makeText(mainActivity.this, "SpeedSign Mode in use", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(mainActivity.this, "MapSpeed Mode in use", Toast.LENGTH_LONG).show();
}
SharedPreferences settings2 = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor2 = settings2.edit();
editor2.putBoolean("speedSignMode", speedSignMode);
editor2.commit();
break;`
Gracias por todas las respuestas rápidas y útiles - Marqué a TME como el aceptado (ya que tenía la esencia clara del por qué :) pero todas las respuestas fueron buenas. Normalmente soy un programador tipo if if else else, por eso me han pillado aquí :) – SimpleSi