Android:更改语言android N,应用程序实例未更新
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Android:更改语言android N,应用程序实例未更新,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1957字,纯文字阅读大概需要3分钟。
内容图文
![Android:更改语言android N,应用程序实例未更新](/upload/InfoBanner/zyjiaocheng/768/780093d6e7da49908004c22945c17f52.jpg)
我按照Android N change language programmatically在android N及以上版本中更改了我的应用程序的语言.但是,我仍然遇到应用程序上下文实例的问题.
在我的Application类中:
private static Application mInstance;
public static Context getApplication() {
return mInstance;
}
@Override
public 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,应用程序实例未更新所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。