我的代码目前有一个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;
}
答案 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)
可能不是好的或完美的解决方案。但是会奏效。