我有按此顺序添加到后台堆栈的片段:
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();
答案 0 :(得分:0)
因此,使用popBackStack两次证明不是问题。问题是InfoFragment的onStart方法中的异步调用,我没有考虑过。异步调用是在onStart方法中,当调用popBackStack时,也调用了该方法。在第二个popBackStack删除InfoFragment之后,此异步调用已完成。此异步调用是一个URI加载的图像,由于该片段不再附加到活动,因此尝试设置ImageView的图像失败。