Android: Sprache Ändern programmgesteuert

Habe ich 3 buttons um Sprache zu ändern. So muss ich die Methode, wo könnte ich die Zuhörer zu Tasten, was könnte sich ändern, die Sprache jedesmal, wenn Sie gedrückt werden.
Ich habe versucht, diese https://stackoverflow.com/a/2900144/1088229 so aber es ändert Gebietsschema nur einmal, und scheint, dass dies nicht mehr funktioniert, (wenn ich Sie wieder, es ist nicht einmal reagieren). Also ich habe changeLanguageListener() Ende der Hörer, so Zuhörer aktualisiert wird.

Also ist es So ok, wie ich es gelöst oder gibt es einen anderen Weg?

private void changeLanguageListener() {
    final Button butEn = (Button) findViewById(R.id.button_language_en);
    final Button butLt = (Button) findViewById(R.id.button_language_lt);
    final Button butRu = (Button) findViewById(R.id.button_language_ru);
    OnClickListener listener = new OnClickListener() {

        public void onClick(View v) {
            Button but = (Button) v;
            Resources res = getResources();
            String current = res.getConfiguration().locale.getCountry();
            Log.i("Current", current);
            String localeString = new String(current);
            if (but.equals(butEn)) {
                localeString = "en";
            } else if (but.equals(butLt)) {
                localeString = "lt";
            } else if (but.equals(butRu)) {
                localeString = "ru";
            }
            Log.i("Clicked", localeString);

            if (!current.equalsIgnoreCase(localeString) && localeString.length() > 0) {
                //Change locale settings in the app.
                DisplayMetrics dm = res.getDisplayMetrics();
                android.content.res.Configuration conf = res.getConfiguration();
                conf.locale = new Locale(localeString.toLowerCase());
                res.updateConfiguration(conf, dm);  
                //refresh menu
                setGridView();
                //added this line to get refreshed listener
                changeLanguageListener();
            }               
        }
    };
    butEn.setOnClickListener(listener);
    butLt.setOnClickListener(listener);
    butRu.setOnClickListener(listener);
}

InformationsquelleAutor Paulius Vindzigelskis | 2012-05-22

Schreibe einen Kommentar