Android 处理异步任务的结果

Android 处理异步任务的结果,android,android-asynctask,fragmenttransaction,Android,Android Asynctask,Fragmenttransaction,目前,我的应用程序正在/正在异步任务中处理http post和其他内容,然后当任务完成并调用onPostExecute时,我会尝试通过片段事务重定向到另一个片段。事实证明,这相当棘手,我正在寻找其他方法来处理这种情况,而不必尝试在onPostExecute中提交事务。谢谢 编辑:这是从onPostExecute调用的方法 private void callback(boolean submissionSuccessful) { if (submissionSuccessful)

目前,我的应用程序正在/正在异步任务中处理http post和其他内容,然后当任务完成并调用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后提交确认片段,让用户知道过程已完成。

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

2件事:

  • 您可能希望告诉您的
    活动
    执行转换(移动回调方法)。这将此片段与第二个片段分离,第二个片段被认为是“良好实践”
  • 其次,在
    onPostExecute
    中,您的
    片段可能不再附加到
    活动
    ,并且
    getActivity()
    将返回
    null
    。您可以在
    onPause
    中取消
    AsyncTask
    ,或在
    onPostExecute
    中检查
    isAdded

请出示:1。你现在是如何处理事情的,还有2。到底什么是棘手的?我现在编辑了我的原始帖子来反映这些信息。奇怪的是,使用这段代码,有时当我的异步方法完成时,它会移动已完成的片段,我看到了它,但有时它会跳过已完成片段的视图。这是我现在的主要问题,如果在调用onsaveInstance()之后偶然调用了commit(),那么它会抛出非法的状态异常。