我正在尝试将信息从片段发送到主要活动。
我正在尝试在主要活动的片段中设置var interfaceName
。
我创建了var menuInterface: MenuInterface
,并尝试使用onNavigationItemSelected
进行设置
myFragment.menuInterface = this
menuInterface
由于某些原因而保持为空...知道为什么吗?
onNavigationItemSelected
override fun onNavigationItemSelected(menuItem: MenuItem): Boolean {
when (menuItem.itemId) {
R.id.feedLayoutId -> {
feedFragment = FeedFragment()
feedFragment.menuInterface = this
barTitle.text = "myTitle"
supportFragmentManager
.beginTransaction()
.replace(R.id.frame_layout, feedFragment)
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.commit()
}
}
drawerLayout.closeDrawer(GravityCompat.START)
return true
}
答案 0 :(得分:2)
在活动中添加MenuInterface,然后从您的代码中删除此行。
feedFragment.menuInterface = this
在您的片段中:
private lateinit var menuInterface: MenuInterface
override fun onAttach(context: Context?) {
super.onAttach(context)
menuInterface = context as MenuInterface
}
override fun onDetach() {
menuInterface = null
super.onDetach()
}
答案 1 :(得分:0)
我已经为此类问题提供了解决方案。 https://stackoverflow.com/a/35038574/3027124
想法是活动和片段之间的通信应该通过interfaces
完成,或者您应该实现MVVM
体系结构,并对fragment
和activity
使用相同的视图模型。
有用的资源