android - 如何重用一个片段
问题描述
当我替换一个片段时,它会被破坏。我试图在活动的 onCreate 中创建片段并在活动中保存它的引用,并在我“重新显示”或“重新打开”它时通过调用替换引用来使用它,但这没有帮助并且片段被破坏(替换时由另一个片段)并重新创建。解决方案应该是什么?
我想要实现的目标是在 WhatsApp 中说片段在不可见时不应被破坏,除非我没有使用滑动手势,而是使用常规按钮。
谢谢。
解决方案
您需要使用addToBackStack()
来记住片段事务,如下所示:-
FragmentA fragmentA = new FragmentA();
getFragmentManager().beginTransaction()
.replace(R.id.YOUR_CONTENT,fragmentA,"YOUR_TARGET_FRAGMENT_TAG")
.addToBackStack("YOUR_SOURCE_FRAGMENT_TAG").commit();
你可以检查片段是否已经存在于堆栈中或不像下面那样
Fragment fragment = getFragmentManager().findFragmentByTag("YOUR_TARGET_FRAGMENT_TAG");
if (fragment!=null && fragment instanceof FragmentA) {
//you are good to go, do your logic
}
推荐阅读
- python - 将一个 pdb 命令转换为另一个,但它不起作用
- html - 用图片替换 onclick 按钮
- java - 为什么在尝试将 PUT 请求从 angular5 发送到 spring-boot 时我得到未经授权?
- jquery - 从 json 数据动态生成 html 表
- php - 无法添加或更新子行:外键约束使表 empleado 和 contrato 失败
- c++ - Prims 算法:运行时错误 (C++)
- python - Python中的合并循环和打印语句
- java - 加密结果仅是字母数字
- javascript - 从 Mongo Query 返回的数据的错误处理
- model - 我在哪里可以找到 EMFText 文档或示例?