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

Android 返回随机数,而不是jsonobject中strings.xml中的字符串值,android,Android,我有一个验证字段的函数,该字段返回JSONObject private JSONObject validateFields(String field){ JSONObject returnData = new JSONObject(); try{ if (field == "description"){ if (expensesDescription.length() < 1){ returnData

我有一个验证字段的函数,该字段返回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;
}
但问题不是土司显示错误消息,而是显示一个数字“2131427350”。这里有什么问题

顺便说一下,如果我将validateFields函数中的returnMessage更改为

returnData.put("returnMessage","some error lalala");
将显示正确的“some error lala”消息。

此处

returnData.put("returnMessage",R.string.expenses_description_validation_length);
您正在为returnMessages键设置一个resources,因此您的toast应该如下所示

 int resId = Integer.parseInt(dataValidation.getString("returnMessage"));
 Toast.makeText(getActivity(), getActivity().getString(resId), Toast.LENGTH_SHORT).show();

这样,您放入json中的资源id将转换回本地化字符串

R.string。费用\u说明\u验证\u长度
是标识符,而不是字符串。使用
Context.getString
获取字符串值。我尝试了您的答案,它显示了一个错误“无法解析方法'getString(java.lang.String)”。但是如果我执行Toast.makeText(getActivity(),getActivity().getString(R.String.expenses\u description\u validation\u length),Toast.length\u SHORT.show();它可以工作。
returnData.put("returnMessage",R.string.expenses_description_validation_length);
 int resId = Integer.parseInt(dataValidation.getString("returnMessage"));
 Toast.makeText(getActivity(), getActivity().getString(resId), Toast.LENGTH_SHORT).show();