Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在区域设置更改时刷新Android应用程序?_Android_Android Layout_Android Studio_Locale - Fatal编程技术网

如何在区域设置更改时刷新Android应用程序?

如何在区域设置更改时刷新Android应用程序?,android,android-layout,android-studio,locale,Android,Android Layout,Android Studio,Locale,我正在开发Android应用程序。以下代码工作正常,但当我通过后退按钮转到main活动时 SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this); Configuration config = getBaseContext().getResources().getConfiguration(); String lang = settings.getStrin

我正在开发Android应用程序。以下代码工作正常,但当我通过
后退按钮转到
main活动时

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());
        }
当我从
多列表首选项更改应用程序的语言时,它会给出一个错误

原因: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中列出的任何语言选项时,如何刷新/重新创建应用程序(或活动)?


谢谢大家!

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

替换

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


TargetActivity
在上一行将是您想要进入的活动)

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

替换

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


TargetActivity
在上面一行将是您想要去的活动)

我不知道解决方案,因为我不太习惯Android API,但您的错误很容易发现。FindReference返回一个ListPreference,您将其强制转换为MultiSelectListPreference。为什么需要MultiSelectListPreference?我在multilistpreference中提供语言选项。那么,您需要更改FindReference方法,因为它不返回multilistpreference(或者使用decorator模式从首选项创建新的multilistpreference我不知道解决方案,因为我不太习惯Android API,但您的错误很容易发现。findPreference返回一个ListPreference,而您将其强制转换为MultiSelectListPreference。为什么需要MultiSelectListPreference?我提供了语言选项。)那么,您需要更改FindReference方法,因为它不返回multilistpreference(或者使用decorator模式从首选项创建新的multilistpreference。我将其替换为
MainActivity.class
,它会使应用程序崩溃。顺便说一下,我的TargetActivity是当前活动。我只想在从
ListPreference
中选择另一种语言时更改页面的语言。我将其替换为
MainActivit。)y、 类,它会使应用程序崩溃。顺便说一句,我的TargetActivity是当前活动。当我从
列表首选项中选择另一种语言时,我只想更改页面的语言。