2014-01-11 134 views
1

如何在其他片段的片段中調用AsyncTask?如何在其他片段的片段中調用AsyncTask?

Fragment中的AsyncTask的代碼。

public class FileBrowserFragment extends Fragment { 

    private class ContiunedDownloadTask extends AsyncTask<FileBrowser, Integer, FileBrowser> { 

       @Override 
       protected FileBrowser doInBackground(FileBrowser... browsers) { 

        browsers[0].retrieveFileList(mDirectory, FileNode.Format.all, false) ; 
        return browsers[0] ; 
       } 

       @Override 
       protected void onPostExecute(FileBrowser result) { 

        Activity activity = getActivity() ; 
        if (activity == null) 
         return ; 

        if (activity != null) { 


        List<FileNode> fileList = result.getFileList() ; 

        mFileList.addAll(fileList) ; 

        mFileListAdapter.notifyDataSetChanged() ; 

        if (!result.isCompleted() && fileList.size() != 0) { 
         mFileListTitle.setText(mFileBrowser + " : " + mReading + " " + mDirectory + " (" 
           + mFileList.size() + " " + mItems +")") ; 

         Log.i(TAG, "mFileListTitle-----11111 = " + mFileListTitle.getText()); 

         new ContiunedDownloadTask().execute(result) ; 
        } else { 
         mFileListTitle.setText(mFileBrowser + " : " + mDirectory + " (" + mFileList.size() 
           + " " + mItems +")") ; 

         Log.i(TAG, "mFileListTitle-----22222 = " + mFileListTitle.getText()); 
         setWaitingState(false) ; 
        } 
       } 
      } 
     } 

如何調用其他fragmentFileBrowserFragmentAsyncTask

+0

爲什麼你需要這個?創建一個asynctask的類,並創建它的對象,並在需要時隨時調用。如果你不想這樣做,比改變它的訪問修飾符爲public – Eddy

+0

將asynctask移動到單獨的.java文件 – Raghunandan

回答

2

只需在自己的文件中創建您的asynctask。要做到這一點創建另一個名爲ContiunedDownloadTask.java的Java文件,並複製你的類。然後,你可以調用下面的方法:

new ContiunedDownloadTask().execute(fileBrowser); 

如果你真的想保持類定義片段的類,那麼你需要把它公開靜態的,這樣稱呼它:

new FileBrowserFragment.ContiunedDownloadTask().execute(fileBrowser); 
+0

因此...如果我不要這樣做,我不能從另一個片段中調用AsyncTask片段? – Wun

+0

你可以,但你需要把它變成公共課。當你公開的時候,沒有理由把類定義保存在片段的類中。 – ayorhan

+0

我已經將AsyncTask從private改爲public,而我只是想知道如何從另一個Fragment調用AsyncTask。請教我怎麼做?謝謝 !! – Wun