我有一个验证字段的函数,它返回JSONObject
private JSONObject validateFields(String field){
JSONObject returnData = new JSONObject();
try{
if (field == "description"){
if (expensesDescription.length() < 1){
returnData.put("returnCode",0);
returnData.put("returnMessage",R.string.expenses_description_validation_length);
}else{
returnData.put("returnCode",1);
}
}
}catch (JSONException e) {
Log.e(FILE_NAME, "An error has occurred: " + e.toString(), e);
}
return returnData;
}
正如您所看到的,我为returnMessage提供了一个字符串资源的引用。以防万一,字符串资源是:
<string name="expenses_description_validation_length">Please enter your expenses\' description.</string>
好的,这就是我如何调用函数
private JSONObject dataValidation = new JSONObject();
dataValidation = validateFields("description");
if (Integer.parseInt(dataValidation.getString("returnCode")) == 0){
Toast.makeText(getActivity(), dataValidation.getString("returnMessage"), Toast.LENGTH_SHORT).show();
}
但问题是代替显示错误消息的吐司,它显示一个数字&#34; 2131427350&#34;。这里的问题是什么?
顺便说一句,如果我将validateFields函数中的returnMessage更改为
returnData.put("returnMessage","some error lalala");
正确的&#34;一些错误lalala&#34;将显示消息。
答案 0 :(得分:2)
这里
returnData.put("returnMessage",R.string.expenses_description_validation_length);
您正在为returnMessages键设置资源,因此您的Toast应该看起来像
int resId = Integer.parseInt(dataValidation.getString("returnMessage"));
Toast.makeText(getActivity(), getActivity().getString(resId), Toast.LENGTH_SHORT).show();
这种方式将资源id,你放入json转换回本地化字符串