2014-01-11 44 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