现有片段在阻止提交重复片段后消失



所以我想确保我不会多次提交相同的片段,为此,我确保我只在第一次提交片段时提交。我通过以下方式实现了它。但问题是即使它没有第二次提交,它也会擦除我当前的片段视图(所以视图消失了,但片段仍在堆栈上(

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)
}

为了提供一些上下文,当用户按下操作栏按钮时会创建新片段,这就是我在 onOptionsItemSelect 中实现它的原因。

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

最新更新