android - 防止提交重复片段后,现有片段正在消失
问题描述
所以我想确保我不会多次提交同一个 Fragment,为此我确保我只在第一次提交一个 Fragment。我已经通过以下方式实现了它。但问题是即使它没有第二次提交,它也会删除我当前的片段视图(因此视图消失但片段仍在堆栈上)
override fun onOptionsItemSelected(item: MenuItem): Boolean {
val vm = ViewModelProvider(this).get(SearchPlayerViewModel::class.java)
setContentView(R.layout.tracked_players_fragment_container)
val frag = TrackedPlayersFragment.newInstance()
if(item.itemId == R.id.players_list_button){
if (!frag.isAdded){
if (!vm.isTrackedPlayersInitialized()) {
vm.getTrackedPlayersList()
}
supportFragmentManager.beginTransaction()
.replace(
R.id.fragment_container_view_tag,
frag, "FRAG_TAG"
).addToBackStack(null)
.commit()
}
}
return super.onOptionsItemSelected(item)
}
为了提供一些上下文,当用户按下操作栏按钮时会创建新片段,这就是我在 onOptionsItemSelected 中实现它的原因。
解决方案
没关系,是 if 语句之外的 setContentView 导致了问题。
推荐阅读
- ios - 如何将许多对象添加到核心数据中?
- java - 程序运行,但无论输入如何,第二个循环都会结束
- python - 如何理解这个涉及递归的 Python 代码的输出?
- javascript - CKEditor 4 在 Material UI 对话框中使用时出现问题
- python - 有没有办法在 os.system() 中连接 python 变量?
- redux - 使用 rest 调用的 Redux crud 实现
- r - 在 R 中转置数据框的特定列
- ruby - 如何在 Windows 64bit 和 Ubuntu 18.04 中部署 Shoes 3.3.7 应用程序
- c# - Web API 验证来自自定义身份验证提供程序的 JWT 不记名令牌
- apache - 在htaccess中允许ipv6(单地址和网络)的正确方法是什么?