频道栏目
首页 > 资讯 > 其他 > 正文

Activity在设置为不随系统语言变化重新onCreate的模式下如何更新该Activity字符串显示?

18-07-30        来源:[db:作者]  
收藏   我要投稿

如果当切换系统语言后,需要更新界面的某些字符串资源显示,可以参考如下两种方法:

首先可以监听切语言变化的通知,可以使用广播或者监听配置变化

注册广播:

Activity中覆写:
public void onConfigurationChanged(Configuration newConfig);

如上仅仅为了当语言配置变化时,接收通知触发更新界面,后续如果需要获取正确的资源,请参考如下两种方式:

1. 使用Application Context 而不是Activity context, 获取对应字符串,更新UI

// Application context must be used to get correct string instead of activity context

// which won't update configuration when switch language.

String text = mContext.getApplicationContext().getString(R.string.local_storage_title);

这种方式仅仅适用于更新个别字符串资源显示,比较简单,这是由于切换语言,应用Application的Context所语言一定变化,但Activity的Context是否变化依赖于是否创建,如果设置不随语言变化,就不会变化。

2. 使用Activity context获取资源更新

Activity context获取字符串,当不随配置变化时,字符串是原来的语言;怎么才能获取正确的多语翻译,首先就需要更新Activity的configuration,然后再使用activity context获取资源就ok。

private void switchLanguage(Context context) { // context -activity

Resources resources = context.getResources();

Configuration config = resources.getConfiguration();

config.setLocales(LocaleList.getDefault());

resources.updateConfiguration(config, resources.getDisplayMetrics());

}

switchLanguage(mContext);

String text = mContext.getString(R.string.local_storage_title);

相关TAG标签
上一篇:Android开发之做一键批量卸载App功能的详细讲解
下一篇:Kotlin写一个自定义的菜单控件代码实现
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站