弹出堆栈两次会导致错误

时间:2015-07-27 16:20:54

标签: java android back-stack

我有按此顺序添加到后台堆栈的片段:

  1. 目标片段(可能是两个片段之一)
  2. InfoFragment
  3. SuccessFragment
  4. SuccessFragment有一个按钮,其onClick()如下所示:

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

    但是,执行popBackStack()两次会导致错误,指出InfoFragment未附加到活动。如何在没有此错误的情况下正确弹出后栈两次?

    编辑:添加了如何将片段添加到backstack的代码。

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

1 个答案:

答案 0 :(得分:0)

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