如何通过自定义SettingsActivity上的ListPreferences将所选语言设置为整个应用程序?

时间:2019-02-23 17:43:51

标签: android kotlin sharedpreferences listpreference preferencefragment

我最近开始从事Android App开发工作,并且知道已经问过类似的问题。但是,尽管如此,我找不到任何解决方案来解决我的问题。我遇到以下问题:我正在使用一个自定义SettingsActivity,其中包括一个SettingsFragment,如下所示:

SettingsActivity.kt

class SettingsActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        fragmentManager.beginTransaction().add(android.R.id.content, SettingsFragment()).commit()
    }

    class SettingsFragment : PreferenceFragment() {
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            addPreferencesFromResource(R.xml.settings_pref)
        }
    }
}

settings_pref.xml中,我有一个ListPreference,如下所示:

settings_pref.xml

   <ListPreference
        android:key="list"
        android:title="@string/language"
        android:summary="@string/sel_language"
        android:defaultValue="1"
        android:entries="@array/pref_language_list_titles"
        android:entryValues="@array/pref_language_list_values"
        android:negativeButtonText="@null"
        android:positiveButtonText="@null"/>

我尝试了所有可能在Google上找到的解决方案,但是无法使其可行。我想给用户提供在设置中选择应用语言的可能性。我需要一个可行且可行的解决方案,例如设置->语言->选择语言->返回MainActivity ,甚至重新启动应用程序(如果需要),并让用户使用其他语言来使用该应用程序不论设备系统语言是什么,都可以在应用中找到。

在此先感谢您,如果我不够清楚,请告诉我。如果需要,我会尝试提供更多详细信息。

1 个答案:

答案 0 :(得分:2)

您必须为新语言创建新的字符串文件。 (en,fr那样)。然后,您将必须在设置活动中设置android语言环境。您可以将所选语言存储在sharedpreference中。您可以获取设置语言环境的答案。 Set Locale programmatically