Callback AsyncTask to Fragment

1247 ワード

----------------------------------------------
// Fragment
public class TestFragment extends Fragment {

  // 
    private void methodThatStartsTheAsyncTask() {
        TestAsyncTask testAsyncTask = new TestAsyncTask(new FragmentCallback()     {
            @Override
            //         
            public void onTaskDone() {
                methodThatDoesSomethingWhenTaskIsDone();
            }
        });
    }

    private void methodThatDoesSomethingWhenTaskIsDone() {
       // 
    }
    
    // Fragment 
    public interface FragmentCallback {
        public void onTaskDone();
    }
}

-----------------------------------------------------
public class TestAsyncTask extends AsyncTask<Void, Void, Void> {
    private FragmentCallback mFragmentCallback;

    public TestAsyncTask(FragmentCallback fragmentCallback) {
        mFragmentCallback = fragmentCallback;
    }

    @Override
    protected Void doInBackground(Void... params) {
        // 
        return null;
    }

    // 
    @Override
    protected void onPostExecute(Void result) {
        mFragmentCallback.onTaskDone();
    }
}

-------------------------------------------------------------------------