0

Para una aplicación, con la intención de detectar cuándo está el dispositivo en español, he usado el siguiente if:

if(Locale.getDefault().getLanguage()=="es")

No obstante, aunque esto me ha funcionado en el emulador de Android Studio (7.0) cambiando el idioma del dispositivo desde los ajustes y abriendo la app en distintas situaciones, en el 4.0 no detecta el español de esta manera, por lo que siempre pasa por el else.

Por ello me gustaría saber si este método se puede usar con todas las versiones, si no es así cuál debería usar y en caso contrario qué es lo que falla para que unas veces funcione y otras no.

pepito
  • 792
  • 1
  • 15
  • 31

1 Answers1

2

Cambia if(Locale.getDefault().getLanguage()=="es") por

if("es".equals(Locale.getDefault().getLanguage()))

Los Strings en Java no se deben comparar con ==, sino con el método equals.

Deberías echar un ojo a esta pregunta para más información.

Pablo Fradua
  • 3,488
  • 10
  • 20
  • Tienes toda la razón. No obstante, si es así, ¿Por qué a veces funciona y otras no? – pepito Jul 07 '17 at 06:56
  • 1
    Es casualidad. El compilador reutiliza los huecos de memoria de Strings para mejorar el rendimiento, pero este comportamiento es arbitrario y no consistente entre diferentes equipos. – Pablo Fradua Jul 07 '17 at 07:40