选择时警报对话框未更改

时间:2020-11-06 11:30:23

标签: java android android-alertdialog alert setlocale

我正在尝试在应用程序中选择语言。选择语言后,语言会改变,但选择不会改变。我使用两种语言,如果我选择了第一语言(印度尼西亚),但是如果我选择了第二语言(英语),则选择仍然是第一选择(印度尼西亚),并且语言变成了英语。这是我的代码。

 Button changeLang = findViewById(R.id.bahasa);
        changeLang.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showChangeLanguageDialog();

            }
        });

此代码显示对话框警报。

  private void showChangeLanguageDialog() {
            final String[] listItems = {"Indonesia", "English"};
            AlertDialog.Builder mBuilder = new AlertDialog.Builder(AboutActivity.this);
            mBuilder.setTitle("Pilih Bahasa");
    
    
    
            Integer selectedPos = 0;
            if(listItems.equals("Indonesia")){
                selectedPos = 1; }
    
                    else {
                    selectedPos = 0;
                }
    
            mBuilder.setSingleChoiceItems(listItems, selectedPos, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                String selectedItem = listItems[which];
    
                   if (selectedItem.equals("Indonesia")) {
                        setLocale("in");
                        recreate();
                   } else {
                       setLocale("en");
                       recreate();
                    }
                   dialog.dismiss();
                }
            });
    
            AlertDialog mDialog = mBuilder.create();
            mDialog.show();
        }

private void setLocale(String lang) {

    Locale locale = new Locale(lang);
    Locale.setDefault(locale);
    Configuration config = new Configuration();
    config.locale = locale;
    getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());

    SharedPreferences.Editor editor = getSharedPreferences("Settings", MODE_PRIVATE).edit();
    editor.putString("My_Lang", lang);
    editor.apply();
}

public void loadLocale(){
    SharedPreferences preferences = getSharedPreferences("Settings", Activity.MODE_PRIVATE);
    String language = preferences.getString("My_Lang","");
    setLocale(language);
}

0 个答案:

没有答案