El *_*uli 2 android android-fragments
我有两个片段,
fragmentA在前景中
现在我用FragmentTransaction.add(id, Fagment)
,(not .replace
)显示fragmentB 所以fragmentA仍然存活,其上有fragmentB,
现在我使用back
按钮,这里片段B被破坏,片段A可见,
在这一刻,我怎么会知道fragmentA又回到了"前台",即onResume
,
请注意,onResume
没有被调用,FragmentTransaction.add(id, Fagment)
换句话说,onPause
当显示fragmentB时,fragmentA不会被调用
非常感谢您的帮助
如果您想知道片段A何时再次可见,您可以先将其隐藏在创建片段B的片段事务中:
fragmentTransaction.add(id, fragmentB).hide(fragmentA).addToBackStack(null);
Run Code Online (Sandbox Code Playgroud)
然后在Fragment A中,覆盖onHiddenChanged:
@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
// Handle visibility changed. Note this method is called only when the state is changed.
}
Run Code Online (Sandbox Code Playgroud)
按下后退按钮时,片段事务将被反转,片段的状态将变为可见.有一点需要注意:我注意到隐藏状态不会在活动轮换之间保留,因此您必须在onSaveInstanceState中执行自己的簿记.我做了类似于你所问的事情,因为在我的例子中,片段视图的重建成本很高.
在执行此操作之前,您可能需要考虑以另一种方式处理片段,例如使用.replace()而不是.add().如果您的片段被新片段完全隐藏,那么您可能不需要保留它,并且一旦用户点击后退按钮,您就可以让片段管理器将其恢复.这样,您可以使用正常的生命周期函数,如onPause和onResume.
归档时间: |
|
查看次数: |
862 次 |
最近记录: |