处理异步任务的结果

时间:2014-05-12 17:54:08

标签: android android-asynctask fragmenttransaction

目前,我的应用程序正在处理一个http帖子和Async任务中的其他一些东西,然后当任务完成并调用onPostExecute时,我会尝试通过片段事务重定向到另一个片段。事实证明这非常棘手,我正在寻找处理这种情况的替代方案,而不尝试在onPostExecute中提交事务。谢谢!

编辑:这是从onPostExecute ...

调用的方法
private void callback(boolean submissionSuccessful)
{
    if (submissionSuccessful)
    {
        FragmentManager fragmentManager = getActivity()
                .getSupportFragmentManager();

        Fragment f =  new CompletedFragment();

        Bundle args = new Bundle();

        args.putString("id", reportToSubmit.getReferenceId());

        f.setArguments(args);

        fragmentManager.beginTransaction()
                .replace(R.id.content_frame, f, "completed").commit();


    }
    else
    {
        Toast.makeText(getActivity(), getResources().getString(R.string.report_error), 
                Toast.LENGTH_LONG).show();
    }
}

原因如下:用户完成向导(ViewPager),提交,处理时显示进度对话框,完成后onPostExecute提交一个确认片段,让用户知道该过程已完成。

1 个答案:

答案 0 :(得分:0)

逻辑看起来很不错。我不确定你想要改变什么。

2件事:

  • 您可能想告诉您Activity进行转换(移动回调方法)。这将这个片段与第二个片段分离,这被认为是一种良好的实践'。
  • 其次,在onPostExecute中,Fragment 可能不会附加到ActivitygetActivity()将返回null }。您可以取消AsyncTask中的onPause,或在isAdded中查看onPostExecute