我正在尝试创建一个多语言应用程序。
我插入了一个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)
}
}
我在做什么错了?
谢谢