2013-10-02 105 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

相关问题