Android:更改语言android N,应用程序实例未更新

Android:更改语言android N,应用程序实例未更新,第1张

概述我按照AndroidNchangelanguageprogrammatically在androidN及以上版本中更改了我的应用程序的语言.但是,我仍然遇到应用程序上下文实例的问题.在我的Application类中:privatestaticApplicationmInstance;publicstaticContextgetApplication(){returnmInstance

我按照Android N change language programmatically在androID N及以上版本中更改了我的应用程序的语言.但是,我仍然遇到应用程序上下文实例的问题.

在我的Application类中:

private static Application mInstance;public static Context getApplication() {    return mInstance;}@OverrIDepublic voID onCreate() {    super.onCreate();    mInstance = this;}

语言已更改,但不会更改从Application上下文获取的Resources.例如:

MyApplication.getApplication().getResources().getString(stringID);  

返回错误的语言字符串.

我可以在这种情况下更新应用程序实例吗?我坚持这个问题几个小时.因为MyApplication.getApplication()已在我的应用程序中的许多地方使用过.所以我无法转换为Activity上下文.

非常感谢.

解决方法:

我的一个应用程序遇到了同样的问题,因为我确实喜欢我的管理器和实用程序,它们不需要每次都传递上下文.

我的解决方案涉及两个单独的上下文,一个应用程序上下文和一个语言环境.这并不能解决所有问题,例如使用正确的样式对正确的区域设置进行充气,因此您需要使用活动上下文.但是,如果您需要根据当前区域设置从资源中获取正确的字符串或图像,则此解决方案将起作用.

public class MainApplication extends Application {    private static Context applicationContext;    private static Context localeContext;    public static Context getAppContext() {        return applicationContext;    }    public static Context getLocaleContext() {        return localeContext;    }    @OverrIDe    public voID onCreate() {        super.onCreate();        settheme(R.style.Apptheme);        applicationContext = getApplicationContext();        updateLocaleContext();    }    public static voID updateLocaleContext() {        localeContext = LocaleHelper.wrapContext(applicationContext);    }}

LocaleHelper.wrapContext应该使用与Android N change language programmatically上接受的答案类似的解决方案,并且所有活动都需要实现attachBaseContext.每次语言更改时,都需要调用MainApplication.updateLocaleContext.注意:localeContext不保留onCreate函数中设置的样式

现在,您可以将MainApplication.getLocaleContext()用于依赖于正确语言环境的资源,同时使用MainApplication.getAppContext()来扩展不依赖于语言环境的视图.注意:您还可以将localeContext放在LocaleHelper中以减少耦合

总结

以上是内存溢出为你收集整理的Android:更改语言android N,应用程序实例未更新全部内容,希望文章能够帮你解决Android:更改语言android N,应用程序实例未更新所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1116690.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存