如何从void函数中获取价值?

时间:2015-09-09 06:20:55

标签: java try-catch

我的代码目前有一个void函数,我在该函数中有一些值被try / catch包围,我需要获取值。

知道如何从try / catch中提取出值?无法真正将函数更改为字符串方法。

以下是代码:

  protected void onPostExecute(JSONObject json) {

        if (json != null) {
            Toast.makeText(FindFriends.this, json.toString(),
                    Toast.LENGTH_LONG).show();

            try {
                name = json.getString("name");
                System.out.println(name);

            } catch (JSONException e) {
                e.printStackTrace();
            }

        }

    }

提前致谢!

修改。添加了更多代码以澄清。

 class AttemptLogin extends AsyncTask<String, String, JSONObject> {

        // JSON parser class
        JSONParser jsonParser = new JSONParser();
        private static final String LOGIN_URL = url;

        @Override
        protected JSONObject doInBackground(String... args) {

            // TODO Auto-generated method stub
            // here Check for success tag
            try {
                HashMap<String, String> params = new HashMap<>();
                params.put("hp", args[0]);
                JSONObject json = jsonParser.makeHttpRequest(
                        LOGIN_URL, "POST", params);

                if (json != null) {
                    Log.d("JSON result", json.toString());

                    return json;
                }

            } catch (Exception e) {
                e.printStackTrace();
            }

            return null;
        }

3 个答案:

答案 0 :(得分:1)

您必须将对象传递给方法,然后将所需的值分配给该对象的属性

class DataObject {
    private String name;
    //getter & setter
    ...
}

protected void onPostExecute(JSONObject json, DataObject do) {
    ...
    do.name = json.getString("name");
    ...
}

答案 1 :(得分:0)

void返回..无效,其中没有提取。它做了一些事情就是这样。但是,您可以将其从void更改为string。但是,如果你真的做不到的话,那么静态(全局)变量可能会有所帮助吗?尝试:

protected static String _Name;
protected void onPostExecute(JSONObject json) {

        if (json != null) {
            Toast.makeText(FindFriends.this, json.toString(),
                    Toast.LENGTH_LONG).show();

            try {
                name = json.getString("name");
                System.out.println(name);
                this._Name = name;
            } catch (JSONException e) {
                e.printStackTrace();
            }

        }

    }

答案 2 :(得分:0)

可能不是好的或完美的解决方案。但是会奏效。

  • 有一个实例变量并得到它。
  • 向方法添加对象参数并更新对象。来自来电者的参考应提供更新。