Язык не меняется для элементов в listView (Android) - PullRequest
2 голосов
/ 17 октября 2019

У меня есть приложение, которое использует 2 языка. Когда я нажимаю кнопку, чтобы изменить язык, он изменяется для строк в меню и в навигационной панели, но не изменяется для элементов в ListView. Вот мой код.

 private void showChangelanguageDialog() {
    //array of languages to display
    final String [] languages = {"English","Shona"};
    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
    builder.setTitle(getString(R.string.choose_language));
    builder.setSingleChoiceItems(languages, -1, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            if (which == 0){
                //english
                setLocale("en");
                recreate();
            }
            if (which == 1){
                //shona
                setLocale("sn");
                recreate();
            }
            //dismiss alert dialog when language is selected
            dialog.dismiss();
        }
    });
    AlertDialog alertDialog = builder.create();
    alertDialog.show();
}

private void setLocale(String lang) {
    Locale locale = new Locale(lang);
    Locale.setDefault(locale);
    Configuration configuration = new Configuration();
    configuration.locale=locale;
    getBaseContext().getResources().updateConfiguration(configuration, getBaseContext().getResources().getDisplayMetrics());
    //save data to shared preferences
    SharedPreferences.Editor editor = getSharedPreferences("Settings", MODE_PRIVATE).edit();
    editor.putString("My_Lang",lang);
    editor.apply();
}

//load saved lanuage in saved preferences
public void loadLocale(){
    SharedPreferences prefs = getSharedPreferences("Settings",Activity.MODE_PRIVATE);
    String language = prefs.getString("My_Lang","");
    setLocale(language);
}

В чем может быть проблема?

Ответы [ 2 ]

1 голос
/ 17 октября 2019

Возможно, вам нужно вызвать notifyDataSetChanged () в вашем списке, чтобы заставить его обновить представления в

0 голосов
/ 17 октября 2019

Простое решение вашей проблемы должно состоять в том, чтобы перезапустить вашу Activty как показано здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...