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

функции Async не могут возвращать значения, так как они не вызываются как обычные функции. вместо того, чтобы запускаться другой функцией, они запускаются обработчиком событий.

В этом случае вам необходимо определить обещание (используя отложенный объект, https://github.com/CodeAndMagic/android-deferred-object), который в основном сообщает функции, которую вы хотите вернуть, «я еще не знаю, что это будет, но я расскажу вам, когда Я понял."

+0

Я думаю, я должен использовать это решение: http://stackoverflow.com/questions/13815807/return-value-from-asynctask-class-onpostexecute-method, но я не могу понять, что в void onTaskCompleted (значения) что означают «ценности»? – elfoz

Смежные вопросы