2017-05-30 51 views
0

所以我有一個片段x.java和一個AsyncTask類BackgroundDataExtractor(作爲兩個獨立的java文件)。該片段類包含這一段代碼:如何從Android中的AsynTask類返回一些東西(精確到ArrayList)?

BackgroundDataExtractor backgroundWorker = new BackgroundDataExtractor(getActivity(),items); 
backgroundWorker.execute(name); 

其中變量items處於x類中定義的全球ArrayList<CustomClass>

我想BackgroundDataExtractor類添加/更新元素到items(它位於片段x)。

我目前擁有的是:

@Override 
    protected void onPostExecute(final String result) { 
     if(!result.contains("Could not fetch items")) { 
      dialog.dismiss(); 
      String[] resultSplit = result.split(" "); 
      for(int i=1; i<resultSplit.length; i++) { 
       String[] tempStringArray = resultSplit[i].split(";"); 
       items.add(new itemClass(tempStringArray[1],tempStringArray[2],tempStringArray[6],tempStringArray[3],tempStringArray[4],Double.parseDouble(tempStringArray[7]))); 
      } 
     } 
     else { 
      xxxxxx 
     } 
    } 

但是,這並不在該片段中x更新items變量。

有關如何完成此任務的任何提示?

回答

1

你不能從異步進程中返回某些東西,但你可以從onPostExecute調用一個函數併發送你想要的數據。像這樣

public class MyClass extends Activity { 

    private class myTask extends AsyncTask<Void, Void, Void> { 

     //initiate vars 
     public myTask() { 
      super(); 
      //my params here 
     } 

     protected Void doInBackground(Void... params) { 
      //do stuff 
      return null; 
     } 

     @Override 
     protected void onPostExecute(Void result) { 
      //do stuff 
      myMethod(myValue); 
     } 
    } 

    private void myMethod(Value myValue) { 
     //handle value 
    } 
} 
相關問題