对于学校,我必须制作一个具有一个活动和多个片段的android项目。在我的项目中,可以在MainFragment中添加来自另一个片段的数据的新遭遇(= new选项卡)。或者至少应该如此。
我现在面临的问题是,当我想回到带有标签的MainFragment时,我必须重新制作我的片段(由于android破坏了片段)并切换到它。但是在切换到片段之前,我想使用新数据向TabHost添加一个新标签。 但是,此TabHost为null。
我真的不知道如何从另一个片段为我的TabHost创建新标签。我希望有人能帮助我。
单击“浮动操作”按钮时,我将数据(此处为列表)提供给FragmentSwitcher(我的mainActivity包含此接口)
fab_save.setOnClickListener {
fragmentSwitcher!!.showMainFragmentWithNewTab(playableCharacters)
}
在我的mainActivity(FragmentSwitcher)中,我用选项卡加载MainFragment,想要添加一个带有数据的新选项卡,然后显示我的片段
override fun showMainFragmentWithNewTab(playableCharacters: ArrayList<PlayableCharacter>) {
val mainFragment = supportFragmentManager.findFragmentByTag("MainFragment")!! as MainFragment
mainFragment.addTab(playableCharacters)
switchFragment(mainFragment)
}
在MainFragment中,我有一种制表符的方法。 tab1是我要填充可玩角色列表的recyclerview的ID
fun addTab(playableCharacters: ArrayList<PlayableCharacter>) {
spec.setIndicator("Encounter ${++teller}")
tabHost.addTab(spec)
tab1.layoutManager = LinearLayoutManager(context, LinearLayout.VERTICAL, false)
tab1.adapter = EncounterAdapter(playableCharacters)
}
我真的希望有人能帮助我,因为我在这个问题上陷于困境。
如果您想更好地查看我的代码,请参见my github link和源代码。