Wie man die Sprache für eine ganze Android-Anwendung ändert?

Ich möchte eine Anwendung schreiben, die entweder Englisch oder Chinesisch anzeigen kann. Ich habe bereits 2 string.xml vorbereitet, nämlich value / strings.xml und value-zh-rHK / strings.xml. Aber ich habe keine Ahnung, wie ich die Sprache über ListPreference von Android ändern soll.

xml / preferences.xml:

<?xml version="1.0" encoding="utf-8"?>

<SwitchPreference
    android:key="pref_nightmode"
    android:title="@string/nightmode"
    android:defaultValue="false">
</SwitchPreference>

<ListPreference
    android:key="pref_lang"
    android:title="@string/lang"
    android:dialogTitle="Choose Language"
    android:entries="@array/lang"
    android:entryValues="@array/lang_value"
    android:defaultValue="@string/lang_default">
</ListPreference>

und die Preferences.java

public class Preferences extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setTitle(drawer_menu[5]);
    getFragmentManager().beginTransaction().replace(R.id.content_frame, new MainPreferenceFragment()).commit();
}

public static class MainPreferenceFragment extends PreferenceFragment {
    String locale;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preferences);
        PreferenceManager pm = getPreferenceManager();
        ListPreference lang = (ListPreference) pm.findPreference("pref_lang");
        if(lang.getValue().equals("English")) {
            locale = "en_US";
        } else {
            locale = "zh_HK";
        }
    }
}

Die Aktivität erweitert BaseActivity, da ich genau dort ein Schubladenmenü habe.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage