gpt4 book ai didi

java - 以编程方式更改语言环境后刷新所有 Activity Activity (当前和返回堆栈)

转载 作者:行者123 更新时间:2023-11-29 04:53:32 24 4
gpt4 key购买 nike

我想为我的用户提供应用内(不是设备范围)区域设置(语言)更改。这就是为什么我设置了以下代码,该代码在用户单击特定语言时触发:

private void setLocale(Locale locale) {
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
}

到目前为止一切顺利,但从现在开始我真的不知道如何更新/刷新我所有的 Activity Activity (当前 Activity 和后台堆栈中的所有 Activity )。我是否必须覆盖每个 Activity 的 onResume()?是否有可能对此进行概括?

最佳答案

我会使用 Eventbus 库,例如 this one .

您还可以创建某种设置,一个 OnLocaleChangedListener 接口(interface),让所有 Activity(或其他类)监听更改,如下所示:

public class LocaleSettings {

Locale locale;

List<OnLocaleChangedListener> listeners;


void changeLocale(Locale newLocale){

this.locale = newLocale;

for(OnLocaleChangedListener listener : listeners){
listener.localeChanged(newLocale);
}

}

void addListener(){

}

void removeListener(OnLocaleChangedListener toRemove){

}


interface OnLocaleChangedListener{
void localeChanged(Locale locale);
}
}

关于java - 以编程方式更改语言环境后刷新所有 Activity Activity (当前和返回堆栈),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34563828/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com