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

How to set selected language to whole app using ListPreferences over custom SettingsActivity?

我最近开始从事 Android 应用程序开发工作,并且知道已经有人问过类似的问题。但是,尽管如此,我找不到任何解决方案来解决我的问题。我有以下问题:我正在使用自定义 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 上可以找到的所有可能的解决方案,但无法使其可行。我想让用户可以选择应用程序语言而不是设置。我需要一个可行的解决方案,例如 Settings -> Language -> Select language -> Return 到 MainActivity 甚至重新启动应用程序(如果需要)和让用户通过在应用程序中使用不同的语言来使用应用程序,而不管设备系统语言如何。

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

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