#android #android-studio #android-layout #kotlin
#Android #android-studio #android-макет #kotlin
Вопрос:
Мой класс LocaleHelper, который я использую для изменения языка. Код на Github
В моем классе SecondActivity, например, когда кто-то выбирает английский.
LocaleHelper.setLocale(this, "en")
recreate()
Но моя проблема в том, как изменить MainActivity на английском
Ответ №1:
ОБНОВЛЕНИЕ Найдено решение путем создания нового класса для каждого действия. Вы должны создать новый класс для каждого действия, чтобы использовать экземпляр объектов действий. После этого работайте с обращениями. Если что-то изменится, вызовите setLocale(это «LanguageCode»). Определите это для своего класса Activity.
fun setLocale(activity: Activity, languageCode: String?) {
val locale = Locale(languageCode)
Locale.setDefault(locale)
val resources = activity.resources
val config = resources.configuration
config.setLocale(locale)
resources.updateConfiguration(config, resources.displayMetrics)
}
Создайте новый класс, подобный этому:
public class Main {
public Main(MainActivity act, String s) {
act.setLocale(act,s);
}
}
а затем вызывайте его так, когда происходят изменения:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
var lang = SettingsActivity()
if (lang.STH_CHANGE) {
if (lang.ENGLISH) {
val myobj = Main(this, "en")
}
if (lang.GREEK) {
val myobj = Main(this, "gr")
}
}
setContentView(R.layout.activity_main)
SettingsActivity() — это мое действие, в котором есть кнопка, которая меняется на англо-греческий.