如何在偏好更改或语言更改(区域设置)

时间:2016-07-27 19:20:40

标签: android android-layout android-studio locale

我正在使用Android App。以下代码工作正常,但是当我通过MainActivity按钮转到BackPress时。

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
        Configuration config = getBaseContext().getResources().getConfiguration();

        String lang = settings.getString("lang_list", "");
        if (! "".equals(lang) && ! config.locale.getLanguage().equals(lang)) {
            recreate();
            Locale locale = new Locale(lang);
            Locale.setDefault(locale);
            config.locale = locale;
            getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
        }

当我从MultiListPreference更改我的应用语言时,会出现错误

  

引起:java.lang.ClassCastException:android.preference.ListPreference无法强制转换为android.preference.MultiSelectListPreference

我的应用程序崩溃了..

请看下面的代码..

 final MultiSelectListPreference lang_list= (MultiSelectListPreference) findPreference("lang_list");
            if(news_category_list!=null)
            {
                news_category_list.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
                    @Override
                    public boolean onPreferenceChange(Preference preference, Object o) {
                        AppController.getInstance().notifyPrefrenceChanged(true);
                        //Log.d("on change","change");
                        lang_list.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
                            @Override
                            public boolean onPreferenceChange(Preference preference, Object newValue) {
                                startActivity(new Intent(getActivity(),getActivity().this));
                                return false;
                            }
                        });
                        return true;
                    }
                });
            }

如何在选择新语言的情况下刷新屏幕。选择新语言后,我不想去MainActivity。当我选择其他语言时,只需用当前屏幕刷新页面。

请帮我这个代码。 当我选择ListPreference中列出的任何语言选项时,如何刷新/重新创建应用(或活动)?

谢谢!

1 个答案:

答案 0 :(得分:0)

要进行特定活动,请明确提及该课程:

替换

startActivity(new Intent(getActivity(),getActivity().this));

startActivity(new Intent(getActivity(), TargetActivity.class));

(上面一行中的TargetActivity将是您要去的活动)