更新
通过为每个活动创建一个新类来找到解决方案。您应该为每个活动创建一个新类,以获取活动对象的实例。之后处理案例。如果发生变化,请调用 setLocale(this, "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() 是我的 Activity,其中有一个按钮可以更改为英语-希腊语。