我有一些片段,名为frag1
,直到frag12
。他们按订单制作/调用。因此,frag1
替换为frag2
后,frag2
替换为frag3
,依此类推。在frag10
,我需要回到frag2
。但是当我尝试通过null
访问Frag2
时,我总是tag
。
首先,从frag1
移动到frag2
时,我就这样做了
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(((FrameLayout) container).getId(),
new Frag2(getActivity(), container),
"frag2");
transaction.addToBackStack(null);
transaction.commit();
然后,在frag10
,我尝试了这个
Fragment frag2 = getChildFragmentManager().findFragmentByTag("frag2");
结果是,frag2
是null
。
可能发生了什么?哪里有Frag2
?
答案 0 :(得分:1)
您的所有片段都由getFragmentManager
添加/替换,因此它们位于相同的FragmentManager
中
但是当检索frag2
时,您调用了getChildFragmentManager
,因此当然frag2
为空
试试这个:
Fragment frag2 = getFragmentManager().findFragmentByTag("frag2");
希望这有帮助。
答案 1 :(得分:-1)
你的遗失
ft.addToBackStack(tag);
请添加标签名称,以便提交片段并尝试使用相同的名称
答案 2 :(得分:-1)
在提交之前使用fragment.addToBackStack(TAG)