Android: Zmień język programowo

Mam 3 przyciski do zmiany języka. Muszę więc stworzyć metodę, w której mogę ustawić słuchaczy na przyciski, które mogą zmieniać język za każdym razem, gdy zostaną naciśnięte. Próbowałem tegohttps://stackoverflow.com/a/2900144/1088229 ale w ten sposób zmienia tylko ustawienia regionalne i wydaje się, że to już nie działa (jeśli kliknę ponownie, nawet nie odpowiada). Dodałem więcchangeLanguageListener() na końcu słuchacza, więc słuchacz jest odświeżany.

Czy to w porządku, jak to rozwiązałem, czy jest inny sposób?

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

questionAnswers(3)

yourAnswerToTheQuestion