2013-10-02 86 views
0

我嘗試使用onPostExecute方法中的字符串,但我必須爲此進程編寫接口或處理程序。我讀了一些東西,但對我來說並不明確。我的onPostExecute方法:如何從AsyncTask類的onPostExecute方法返回值?

protected void onPostExecute(String result) { 
      try { 
       JSONArray jArray = new JSONArray(result); 
       JSONObject json_data; 
       for (int i = 0; i < jArray.length(); i++) { 
        json_data = jArray.getJSONObject(i); 

       t = json_data.getString("name"); 


       names.add(t); 
       } 


     } catch (JSONException e1) { 
      e1.printStackTrace(); 
     } catch (ParseException e1) { 
      e1.printStackTrace(); 
     } 
     super.onPostExecute(result); 
    }` 

回答

3

異步函數無法返回值,因爲它們不像正常函數那樣調用。而不是被另一個函數觸發,它們由一個事件處理程序觸發。

在這種情況下,您需要定義一個承諾(使用延遲對象,https://github.com/CodeAndMagic/android-deferred-object),它基本上告訴你要返回的函數「我還不知道它會是什麼,但我會告訴你什麼時候我知道了。」

+0

我想,我必須使用這個解決方案:http://stackoverflow.com/questions/13815807/return-value-from-asynctask-class-onpostexecute-method但我無法理解,在void onTaskCompleted(值)什麼是指「價值」? – elfoz

相關問題