Как установить выбранный язык для всего приложения, используя ListPreferences поверх пользовательских настроек Activity?
Я недавно начал работать над разработкой приложений для 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, но не смог сделать его работоспособным. Я хотел бы дать пользователям возможность выбирать язык приложения вместо настроек. Мне нужно возможное и работающее решение, такое как Настройки -> Язык -> Выбрать язык -> Вернуться к MainActivity или даже перезапустить приложение (если требуется) и позволить пользователю использовать приложение с использованием другого языка в приложении независимо от устройства. системный язык.
Большое спасибо заранее и, пожалуйста, дайте мне знать, если я не достаточно ясно. Я постараюсь дать более подробную информацию, если потребуется.
1 ответ
Вы должны создать новый строковый файл для нового языка. (ru, т. е. как это). Тогда вам придется установить Android-локаль в настройках деятельности. Вы можете сохранить выбранный язык в общих настройках. Вы можете получить ответ для заданной локали. Установите Locale программно