【发布时间】:2015-07-20 11:35:42
【问题描述】:
这是我的onActivityResult 方法的代码:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK) {
String contents = data.getStringExtra("SCAN_RESULT");
if (contents.length() == 26) {
BillBarcode barcode = new BillBarcode(contents);
edtBillId.setText(barcode.extract(BillBarcode.BarcodePart.BillId));
edtPaymentId.setText(barcode.extract(BillBarcode.BarcodePart.PaymentId));
launchService();
} else {
Dialog dialog = new DialogBuilder()
.setTitle(getString(R.string.dialog_title_global_error))
.setMessage(getString(R.string.unknown_barcode))
.build(getActivity());
dialog.show();
}
}
}
问题是getString(R.string.dialog_title_global_error) 和getString(R.string.unknown_barcode) 总是返回英文值,而我也有波斯语值并且语言环境也是波斯语。
问题只存在于这个方法中。
波斯语价值观:
<string name="unknown_barcode">بارکد قابل استفاده نیست.</string>
英文值:
<string name="unknown_barcode">Unknown barcode</string>
编辑
当用户通过此代码从语言页面选择波斯语时,我有一个设置页面并设置我的语言环境:
String languageToLoad = "fa";
Resources res = context.getResources();
// Change locale settings in the app.
android.content.res.Configuration conf = res.getConfiguration();
conf.locale = new Locale(languageToLoad);
【问题讨论】:
-
您能发布
string.xml值吗? -
先设置波斯语本地
-
它已经设置为波斯语
-
@dhke,调用子活动之前方法中的语言环境是 fa 但在 onActivityResult() 中是“en-US”!我应该再次将其设置为 fa 吗??
-
@HuseinBehbudiRad:您是否在应用程序内手动设置区域设置?如果是这样,请记住在
startActivityForResult()和onActivityResult()之间,您的活动可能会被破坏。这可能是问题所在,但我还不确定是否隐藏了其他错误。另外:我对getApplicationContext()的评论与这个问题无关,仅与@m0skit0 的评论有关。
标签: java android multilingual