2013-02-12 47 views
-1

我很新的节目,我已经扩展了AsynTask类是这样的:如何更改AsynTask的返回类型?

private class HttpCalls extends AsyncTask<Void,Void,JSONObject> 

,我已经overrided的方法是这样的:

protected JSONObject doInBackground(Void... voids) { 
    . . . 
    return jsonObject; 
} 

,但是当我打电话new HttpCalls().execute()我想要的返回类型为的JSONObject但我得到的是:

AsyncTask<Void,Void,JSONObject> 

我怎么更改为JSONObject。提前致谢。

+0

Asyctask不会返回任何结果给你的结果。你必须在asynctask的onPostExecute()中检索结果。 – 2013-02-12 06:15:22

+0

请提高您的AACEPTance率.... – 2013-02-12 06:16:38

回答

1
class YouClass { 

public JSONObject result; 

    private class HttpCalls extends AsyncTask<Void,Void,JSONObject> 
     { 
    @Override 
    protected void onPostExecute(JSONObject result) { 
     super.onPostExecute(result); 
       YouClass.result = result; 
     } } } 
+0

发布该问题的用户不回应你的答案。他不会upvote /接受/评论你的答案...... – 2013-02-12 06:18:55

+0

我希望我可以这样写: 'JSONObject j = new HttpCalls()。execute();'但我仍然遇到不兼容的错误。 – sriram 2013-02-12 06:20:52

+0

哦!好的,那我怎么把这个'jsonResult'从这个调用中拿出来呢? – sriram 2013-02-12 06:26:11

1

做这样

JSONObject j = new HttpCalls().execute(); 

会不会实际上是一个JSONObject返回。它将返回AsyncTask本身。

你应该赶在onPostExecute()

@Override 
protected void onPostExecute(JSONObject result) { 

    super.onPostExecute(result); 

    // Do some stuffs 
} 
+0

发布该问题的用户不回应您的答案。他不会upvote /接受/评论你的答案...... – 2013-02-12 06:16:22

+0

我希望我可以这样写: 'JSONObject j = new HttpCalls()。execute();'但我仍然遇到不兼容的错误。 – sriram 2013-02-12 06:21:15

+3

@sriram不,它会自动返回'AsyncTask'。这就是为什么你得到这个错误 – Geros 2013-02-12 06:23:36

相关问题