EditText не меняется с несколькими языками - PullRequest
0 голосов
/ 23 марта 2020

Я пытаюсь создать многоязычное приложение.

Я вставил EditText, который, однако, не меняет своего содержимого после смены языка.

Текст взят из строки файла. 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)
}

}

Что я делаю не так?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...