弹出堆栈两次导致错误

Popping back stack twice causes an error

我有片段已按以下顺序添加到返回堆栈中:

  1. 目标片段(可以是两个片段之一)
  2. 信息片段
  3. 成功片段

SuccessFragment 有一个带有 onClick() 的按钮,如下所示:

@Override
            public void onClick(View v) {
                activity.getFragmentManager().popBackStack();
                activity.getFragmentManager().popBackStack();
            }

但是,执行两次 popBackStack() 会导致错误,指出 InfoFragment 未附加到 activity。我怎样才能在没有这个错误的情况下正确地弹出返回堆栈两次?

编辑:添加了有关如何将片段添加到后台堆栈的代码。

FragmentTransaction transaction = getFragmentManager().beginTransaction();
                        transaction.replace(R.id.main_fragment, new InfoFragment());
                        transaction.addToBackStack(getResources().getString(R.string.tag_info_fragment));
                        transaction.commit();

因此,事实证明,使用 popBackStack 两次不是问题所在。问题是我没有考虑到 InfoFragment 的 onStart 方法中的异步调用。异步调用在 onStart 方法中,当调用 popBackStack 时,该方法也被调用。在第二个 popBackStack 移除 InfoFragment 后,此异步调用完成。此异步调用是一个 URI 加载图像,并且由于片段不再附加到 activity,尝试设置 ImageView 的图像失败。