关闭并重新打开应用程序后如何保存所选语言?

发布于 2025-01-14 09:54:28 字数 1755 浏览 5 评论 0原文

我想更改程序的语言并退出程序,重新进入程序后,设备原来的语言无法更改程序选择的语言。 如果有什么办法请在这一点上帮助我。 这是我的代码:

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() 作为生命周期,我的应用程序中没有任何改变。 非常感谢那些试图帮助我的人:)

I want to change the language of the program and exit the program, and after re-entering the program, the original language of the device can not change the language selected by the program.
if there is any way please help me at this point.
here is my codes :

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)
}

my project does not have even 1 error, but the thing that I want is in too many apps by changing language inside them and they keep selected language, but mine after closing and reopennig, the selected language is changed by default device language!

changing onCreate() to onResume() and onStop() as the lifecycle changed nothing in my app.
thanks a lot to whom is trying to help me :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

假装爱人 2025-01-21 09:54:29
  1. 您可以将值(所选语言)存储在 SharedPreference 中
  2. ,然后在 onStop() 中您可以将值存储在数据库中
  3. ,然后在 onStart() 中您可以从数据库读取值并保留在 SharedPreference 中
  1. You can store the value (selected language) in SharedPreference
  2. and then in onStop() you can store the value in database
  3. and then in onStart() you can read the value from database and keep in SharedPreference
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文