FragmentTransaction 什么时候调用 show 方法?
when FragmentTransaction call show method?
我想要片段 A 到片段 B 的过渡。
片段A交易代码为
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.hide(this);
ft.add(R.id.front_side_container , detail);
ft.addToBackStack(null);
ft.commit();
在片段 A 代码中,ft.hid(this)
<- 我隐藏片段 A
片段 B 中的代码
getFragmentManager().popBackStack();
打popBackStack()
的时候,我不打FrangmentTransaction.show()
但是片段A出现了。为什么?我不叫show()
执行popBackStack()
时自动调用show()
是否正确?
当您调用 'popBackStack()' 时,Fragment 框架将自动处理显示后台堆栈中的最后一个元素,所以是的,它是 100% 正确的。
如果你调用了.hide(),它会调用.show(),如果你没有调用.hide()(意味着旧片段被销毁),它会创建一个全新的片段并显示那。
我想要片段 A 到片段 B 的过渡。 片段A交易代码为
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.hide(this);
ft.add(R.id.front_side_container , detail);
ft.addToBackStack(null);
ft.commit();
在片段 A 代码中,ft.hid(this)
<- 我隐藏片段 A
片段 B 中的代码
getFragmentManager().popBackStack();
打popBackStack()
的时候,我不打FrangmentTransaction.show()
但是片段A出现了。为什么?我不叫show()
执行popBackStack()
时自动调用show()
是否正确?
当您调用 'popBackStack()' 时,Fragment 框架将自动处理显示后台堆栈中的最后一个元素,所以是的,它是 100% 正确的。
如果你调用了.hide(),它会调用.show(),如果你没有调用.hide()(意味着旧片段被销毁),它会创建一个全新的片段并显示那。