Android-Benutzer-Gebietsschema immer wieder nach onCreate?
Ich will eine konfigurierbare Sprache Einstellungen in meiner app.
So, in onCreate meiner Tätigkeit, ich nenne Ressourcen.updateConfiguration
mit dem neuen Gebietsschema.
Jedoch nach onCreate (in einiger Zeit, kann ich es nicht finden wenn), die
Gebietsschema eingestellt ist wieder auf die Standard-locale.
Auf dem code-Beispiel unten, die Zeichenfolgen dargestellt, die in das Haupt-layout (als
aufgeblasen durch setContentView) zeigt die
"in" language version, ABER wenn ich drücken Sie die Menü-Taste, auf die
onCreateMenu heißt, die Saiten -
entnommen aus "en" (Standard) locale.
Das log zeigt dies:
18337 oncreate D { scale=1.0 imsi=525/1 loc=intouch=3 keys=1/1/2 nav=3/1 orien=1 layout=34 uiMode=17 seq=143}
30430 ActivityManager I Displayed activity yuku.coba.locale/.CobaLocaleActivity: 266 ms (total 266 ms)
18337 KeyCharacterMap W No keyboard for id 65540
18337 KeyCharacterMap W Using default keymap: /system/usr/keychars/qwerty.kcm.bin
18337 onmenu D { scale=1.0 imsi=525/1 loc=en_GB touch=3 keys=1/1/2 nav=3/1 orien=1 layout=34 uiMode=17 seq=143}
Zwischen "oncreate" und "onmenu", wird die locale auf Magische Weise ändert.
Bitte helfen, ich habe seit neuestem mit diesem mit kein Glück.
Code-snippet:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Configuration c = new Configuration();
c.locale = new Locale("in");
getResources().updateConfiguration(c, null);
setContentView(R.layout.main);
Log.d("oncreate", getResources().getConfiguration().toString());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
Log.d("onmenu", getResources().getConfiguration().toString());
new MenuInflater(this).inflate(R.menu.utama, menu);
return true;
}
- Dieses problem scheint nicht zu erscheinen, auf 1.5-emulator, kommt aber auf 2.2 Nexus One.
- Hi, ich habe das gleiche proble. Hast du eine Lösung finden?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Jedes 100ms-reset der Konfiguration 🙂
Ich Rat nicht erzwingen, das Gebietsschema an, dass etwas anders ist von der Geräte-Einstellung. Läuft man in Probleme. Sie können bewegen Sie Ihren Aufruf von onResume. Es wird besser sein, aber noch sind Sie gonna Kampf Geräte-Konfiguration. Wieder. Tun Sie das nicht .
statt
getResources().updateConfiguration(c, null);
versuchen
getBaseContext().getResources().updateConfiguration(c, null);
(nicht getDefaultContext sorry)
Können Sie verwenden eine Methode, die ich schrieb, um diese situation zu behandeln: