EditText不会更改为多语言

时间:2020-03-23 15:39:59

标签: android android-studio kotlin

我正在尝试创建一个多语言应用程序。

我插入了一个EditText,但是它在更改语言后不会更改其内容。

文本来自文件string.xml。

要检查问题是否出在文件中,我还插入了一个TextView,但是情况有所变化。

我正在附上我的代码

<EditText
    android:id="@+id/editTxtName"
    android:layout_width="246dp"
    android:layout_height="47dp"
    android:layout_marginTop="61dp"
    android:layout_marginBottom="102dp"
    android:background="@drawable/custom_edit_text"
    android:text="@string/InsertName"
    android:textColor="@android:color/background_dark"
    app:layout_constraintBottom_toTopOf="@+id/textView3"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/txtHello"
    tools:text="@string/InsertName" />

<TextView
    android:id="@+id/textView3"
    android:layout_width="219dp"
    android:layout_height="29dp"
    android:layout_marginStart="89dp"
    android:layout_marginTop="103dp"
    android:layout_marginEnd="103dp"
    android:layout_marginBottom="91dp"
    android:background="@drawable/custom_edit_text"
    android:shadowColor="@android:color/background_dark"
    android:text="@string/InsertName"
    android:textColor="@android:color/background_dark"
    app:layout_constraintBottom_toTopOf="@+id/btnChangeLanguage"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.5"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/editTxtName" />

代码MainActivity

class MainActivity : AppCompatActivity() {

lateinit var btnLang : Button
var isFirstTimeGetFocused = true

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    loadLocate()
    setContentView(R.layout.activity_main)

    btnLang = findViewById(R.id.btnChangeLanguage)

    btnLang.setOnClickListener {

        var context: Context
        showChangeLang()

    }

    editTxtName.setOnClickListener(){
        CleanEditText()
    }
}


fun CleanEditText() {
    if (isFirstTimeGetFocused) {
        editTxtName.setText("");
        isFirstTimeGetFocused = false;
    }
}


fun showChangeLang(){

    val listItemsLang = arrayOf("English","French","Italiano")

    var msgBuilder = AlertDialog.Builder(this@MainActivity)
    msgBuilder.setTitle("Choose Language")
    msgBuilder.setSingleChoiceItems(listItemsLang,-1){
        dialog, which ->
        if(which == 0){
            setLocate("en")
            recreate()
        }else if(which == 1){
            setLocate("fr")
            recreate()
        }else if(which == 2){
            setLocate("it")
            recreate()
        }
        dialog.dismiss()
    }

    var mDialog = msgBuilder.create()
    mDialog.show()


}

private fun setLocate(Lang: String?){
    val langLocale = Locale(Lang)
    Locale.setDefault(langLocale)
    val config = Configuration()
    config.locale = langLocale
    baseContext.resources.updateConfiguration(config, baseContext.resources.displayMetrics)


    val editor = getSharedPreferences("Setting", Context.MODE_PRIVATE).edit()
    editor.putString("My_Lang",Lang)
    editor.apply()
}

private fun loadLocate(){
    val sharedPreferences = getSharedPreferences("Setting", Context.MODE_PRIVATE)
    val langLocale= sharedPreferences.getString("My_Lang","")
    setLocate(langLocale)
}

}

我在做什么错了?

谢谢

0 个答案:

没有答案