在jsonobject的strings.xml中返回随机数而不是字符串值

时间:2014-10-07 15:02:37

标签: android

我有一个验证字段的函数,它返回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;将显示消息。

1 个答案:

答案 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转换回本地化字符串