关闭并重新打开应用程序后如何保存所选语言?
How to save selected language, after closing and reopening the Application?
我想更改程序语言并退出程序,重新进入程序后,设备原语言无法更改程序选择的语言。
如果有任何办法,请在这一点上帮助我。
这是我的代码:
class LanguageActivity : AppCompatActivity() {
private lateinit var databinding: ActivityLanguageBinding
private lateinit var locale: Locale
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
databinding = DataBindingUtil.setContentView(this,R.layout.activity_language)
val languageList = ArrayList<String>()
languageList.add("Select")
languageList.add("English")
languageList.add("Persian")
languageList.add("Pashto")
val adapter = ArrayAdapter(this, androidx.appcompat.R.layout.support_simple_spinner_dropdown_item, languageList)
databinding.spinnerLanguage.adapter = adapter
databinding.spinnerLanguage.onItemSelectedListener = object : AdapterView.OnItemSelectedListener{
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
when(position){
0 -> {
}
1 -> setLocale("en")
2 -> setLocale("fa")
3 -> setLocale("ps")
}
}
override fun onNothingSelected(parent: AdapterView<*>?) {
}
}
}
fun setLocale (languageName: String){
locale = Locale(languageName)
val res = resources
val dm = res.displayMetrics
val conf = res.configuration
conf.locale = locale
res.updateConfiguration(conf,dm)
val refresh = Intent(this, LanguageActivity::class.java)
startActivity(refresh)
}
我的项目甚至没有 1 个错误,但我想要的是在太多的应用程序中通过更改它们内部的语言并且它们保留选定的语言,但是我的项目在关闭并重新打开后,默认情况下更改了选定的语言设备语言!
将 onCreate() 更改为 onResume() 和 onStop() 因为生命周期在我的应用程序中没有任何改变。
非常感谢那些试图帮助我的人:)
- 您可以将值(所选语言)存储在 SharedPreference
- 然后在 onStop() 中,您可以将值存储在数据库中
- 然后在 onStart() 中,您可以从数据库中读取值并保存在 SharedPreference
我想更改程序语言并退出程序,重新进入程序后,设备原语言无法更改程序选择的语言。 如果有任何办法,请在这一点上帮助我。 这是我的代码:
class LanguageActivity : AppCompatActivity() {
private lateinit var databinding: ActivityLanguageBinding
private lateinit var locale: Locale
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
databinding = DataBindingUtil.setContentView(this,R.layout.activity_language)
val languageList = ArrayList<String>()
languageList.add("Select")
languageList.add("English")
languageList.add("Persian")
languageList.add("Pashto")
val adapter = ArrayAdapter(this, androidx.appcompat.R.layout.support_simple_spinner_dropdown_item, languageList)
databinding.spinnerLanguage.adapter = adapter
databinding.spinnerLanguage.onItemSelectedListener = object : AdapterView.OnItemSelectedListener{
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
when(position){
0 -> {
}
1 -> setLocale("en")
2 -> setLocale("fa")
3 -> setLocale("ps")
}
}
override fun onNothingSelected(parent: AdapterView<*>?) {
}
}
}
fun setLocale (languageName: String){
locale = Locale(languageName)
val res = resources
val dm = res.displayMetrics
val conf = res.configuration
conf.locale = locale
res.updateConfiguration(conf,dm)
val refresh = Intent(this, LanguageActivity::class.java)
startActivity(refresh)
}
我的项目甚至没有 1 个错误,但我想要的是在太多的应用程序中通过更改它们内部的语言并且它们保留选定的语言,但是我的项目在关闭并重新打开后,默认情况下更改了选定的语言设备语言!
将 onCreate() 更改为 onResume() 和 onStop() 因为生命周期在我的应用程序中没有任何改变。 非常感谢那些试图帮助我的人:)
- 您可以将值(所选语言)存储在 SharedPreference
- 然后在 onStop() 中,您可以将值存储在数据库中
- 然后在 onStart() 中,您可以从数据库中读取值并保存在 SharedPreference