Я пытаюсь создать многоязычное приложение.
Я вставил 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)
}
}
Что я делаю не так?
Спасибо