在科特林的每一项活动中都要改变语言



我的LocaleHelper类用于更改语言。Github代码

例如,在我的SecondActivity课程中,当有人选择english时。

LocaleHelper.setLocale(this, "en")
recreate()

但我的问题是如何在英语中更改主活动

UPDATE通过为每个Activity创建一个新类来找到解决方案。您应该为每个活动创建一个新类,以获取Activities对象的实例。之后处理案例。如果发生变化,则调用setLocale(即"languageCode"(。将其定义到"活动"类中。

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)

设置活动((是我的活动,其中有一个按钮会变为英语-希腊语。

最新更新