2013-02-12 74 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

相關問題