android - Android忽略runOnUiThread中语言文件中的字符串
问题描述
在我的活动开始时,我正在设置用户的语言:
//lng is user language
Locale locale = new Locale(lng);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
然而,这对我的应用程序中的所有内容都很好,也适用于包括 Asynctask、doInBackground 等在内的整个活动。
但在 AsyncTask 我有一个例外:
catch (final JSONException e) {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(activity.getApplicationContext(),
R.string.Nodata,
Toast.LENGTH_LONG).show();
}
}); }
在 runOnUiThread 中,R.string.Nodata 是从原始语言中获取字符串,而不是用户定义的。所以整个活动都在使用用户的语言,除了这个可运行的。
你能告诉我这里有什么问题吗?
解决方案
R.string.some_string
是一个公共的最终静态 int,它是 R.java 文件中特定字符串的固定 ID。这是自动生成的。
getString(R.string.some_string)
通过读取R.java文件返回上面引用的String。
所以我建议你在你的应用程序中使用第二种方法从资源文件中获取字符串。
要解决您的问题,您可以使用
getResources().getString(R.string.Nodata)
推荐阅读
- android - 在后按按钮上显示空白页
- shell - 如何在 XSLT 的循环中将外部文件的名称作为变量插入?
- windows - 以编程方式删除 Windows 10 PC 中的应用程序和电子邮件帐户
- scala - Spark中配对RDD中的展平值
- sql-server - SSIS | 处理 CSV 文件中不断变化的列
- javascript - JavaScript 错误:未捕获的 TypeError:无法读取第 13 行未定义的属性“子字符串”
- python - 如何将高斯分布与方差数组整合
- html - 如何为不同的视口更改 Drupal 7.x Zen 主题的横幅?
- python - 自变量在类中更改不返回
- kafka-consumer-api - @KafkaListener 处理 Spring Cloud 添加的标头