我希望能够在运行时更改Android应用程序中的显示语言,而无需重新启动应用程序。为此,我相信可以重新创建所有正在运行的活动。问题是我不知道如何引用ActivityManager
未被销毁的所有活动。
答案 0 :(得分:3)
添加"区域设置"你所有活动中的android:configChanges中的属性,然后覆盖活动中的onConfigurationChanged()并相应地处理语言更改。
更多关于http://developer.android.com/guide/topics/manifest/activity-element.html#config
答案 1 :(得分:0)
此方法将在所有API
级别的设备上运行,请确保重新创建以编程方式更改语言的活动。
1。BaseActivity
的{{1}}用于设置语言环境,attachBaseContext
的{{1}}用于所有活动
extends
使用应用程序Activity
和open class BaseAppCompactActivity() : AppCompatActivity() {
override fun attachBaseContext(newBase: Context) {
super.attachBaseContext(LocaleHelper.onAttach(newBase))
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
}
设置区域设置语言
attachBaseContext
使用语言环境onConfigurationChanged
来处理语言更改,该方法适用于所有设备
public class MyApplication extends Application {
private static MyApplication application;
@Override
public void onCreate() {
super.onCreate();
}
public static MyApplication getApplication() {
return application;
}
/**
* overide to change local sothat language can be chnaged from android device nogaut and above
*/
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(LocaleHelper.INSTANCE.onAttach(base));
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
/*** also handle chnage language if device language chnaged **/
super.onConfigurationChanged(newConfig);
}