Изменение языка в каждом действии в Kotlin

#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() — это мое действие, в котором есть кнопка, которая меняется на англо-греческий.