首页 > 解决方案 > 防止提交重复片段后,现有片段正在消失

问题描述

所以我想确保我不会多次提交同一个 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 中实现它的原因。

标签: androidandroid-fragmentskotlin

解决方案


没关系,是 if 语句之外的 setContentView 导致了问题。


推荐阅读