0

我刚刚完成了我的第一个 android 应用程序,但我还有一个小问题要解决:我用两种语言制作了我的应用程序;如果我的手机设置为以法语运行,则应用程序以法语显示,如果手机设置为英语,则以英语运行问题是我设置了一个共享偏好值,让应用程序的用户选择他的首选语言手动,不幸的是,这不起作用。

这是我的共同偏好:

 <ListPreference
        android:defaultValue="English"
        android:entries="@array/Languages"
        android:entryValues="@array/LanguagesValues"
        android:key="language"
        android:summary="@string/Define_the_default_language"
        android:title="@string/Language" />

这就是我尝试实现的方式:

SharedPreferences pref = PreferenceManager
            .getDefaultSharedPreferences(this);
    lan = pref.getString("language", null);
    Log.e("langues", lan);

    SharedPreferences prefs = this.getSharedPreferences("language", 0);
    listener = new SharedPreferences.OnSharedPreferenceChangeListener() {

        public void onSharedPreferenceChanged(SharedPreferences prefs,
                String key) {
            prefs.registerOnSharedPreferenceChangeListener(listener);
            if (lan.equals("FRENSH")) {
                setLocale("FRENSH");
                System.out.println("frensh");

SetLocal 活动:

    public void setLocale(String lang) {
    myLocale = new Locale(lang);
    Resources res = getResources();
    DisplayMetrics dm = res.getDisplayMetrics();
    Configuration conf = res.getConfiguration();
    conf.locale = myLocale;
    Log.e("", "" + myLocale);
    res.updateConfiguration(conf, dm);
    Intent refresh = new Intent(this, Setting.class);
    startActivity(refresh);
}

我该如何解决?

4

1 回答 1

0

我想,你setLocale从来没有被调用过,所以试着在你的特定语言环境偏好上设置一个监听器:

final ListPreference localeListPreference = (ListPreference) findPreference("language");
localeListPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
            @Override
            public boolean onPreferenceChange(Preference preference, Object newValue) {
            if (newValue.toString().equals("FRENSH")) {
                setLocale("FRENSH");
            }

            return true; // if you do not return true, the change would not persist
        });

上面的代码应该在你后面的代码中preference.xml

于 2013-06-10T10:23:45.827 回答