Android,FragmentTransaction.add 之后的 fragment 状态

标签 android android-fragments

我有两个 fragment ,

前景中的 fragment A

现在我用 FragmentTransaction.add(id, Fagment) 显示 fragmentB,(不是 .replace)所以 fragmentA 仍然存在,fragmentB 在它上面,

现在我使用 back 按钮,这里 fragmentB 被销毁,fragmentA 可见,

此时,我怎么知道fragmentA已经回到“前台”,即onResume

请注意 onResume 不会被调用,因为 FragmentTransaction.add(id, Fagment),换句话说,fragmentA 不会进入 onPause当显示 fragment B时

非常感谢你的帮助

最佳答案

如果想知道 fragment A什么时候再次可见,可以先将其隐藏在创建 fragment B的 fragment 事务中:

fragmentTransaction.add(id, fragmentB).hide(fragmentA).addToBackStack(null);

然后在 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.
}

当按下后退按钮时, fragment 事务将被撤销, fragment 的状态将变为可见。您必须注意一件事:我注意到隐藏状态不会在 Activity 轮换之间保留,因此您必须在 onSaveInstanceState 中执行自己的簿记。我做的事情与您的要求类似,因为在我的情况下, fragment View 的重新创建成本很高。

不过,在执行此操作之前,您可能需要考虑以其他方式处理您的 fragment ,例如使用 .replace() 而不是 .add()。如果您的 fragment 完全被新 fragment 隐藏,那么也许您不需要保留它,您可以让 fragment 管理器在用户点击后退按钮后将其带回。这样,您就可以只使用正常的生命周期函数,例如 onPause 和 onResume。

关于Android,FragmentTransaction.add 之后的 fragment 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20713937/

相关文章:

java - 如何在android中刷新对话框 fragment 中的 fragment ?

android - 如何从 DatePickerDialog 检索数据到 AlertDialog

java - 自定义适配器出现此错误 RecyclerView 未连接适配器;跳过布局

Android,如何在启动新 Activity 时禁用 'wipe'效果?

android - 如何在 Android 上伪造 Wi-Fi 或 3G 连接事件

java - 二进制 XML 文件行 #14 : error inflating class fragment//showing maps

java - 如何在StackView中实现onClickListener

Android Wear 通过 WiFi TCP/IP 启用 ADB 连接

android - 我可以在依赖它的 APK 中使用 Android AAR 的资源吗?

java - setImageDrawable 之后滞后