【发布时间】:2020-01-16 08:28:05
【问题描述】:
我正在开发一个项目并使用databinding 和navigation 实现MVVM 模型。 My button 在fragment 上,以drawer menu item 打开,问题是当我单击按钮时它什么也不做,调试器没有进入导航方法,我真的不知道我做了什么错了,谁能帮忙?
MYACCOUNT CLASS:
class MyAccountFragment : BaseFragment() {
private val vm: MyAccountViewModel by viewModel()
override fun getViewModel(): BaseViewModel = vm
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val binding = FragmentMyAccountBinding.inflate(inflater, container, false)
context ?: return binding.root
injectFeature()
setToolbar(binding)
subscribeUi(binding)
return binding.root
}
/**
* set toolbar
* **/
private fun setToolbar(binding: FragmentMyAccountBinding) {
binding.appBarLayout.backClickListener = (activity as MainActivity).createOnBackClickListener()
}
/**
* set ui
* **/
private fun subscribeUi(binding: FragmentMyAccountBinding) {
binding.viewModel = vm
}
}
MYACCVIEWMODEL
class MyAccountViewModel constructor() : BaseViewModel() {
fun onAddRoomClick()
{
navigate(MyAccountFragmentDirections.actionMyAccountFragmentToAddRoomFragment())
}
}
在xml中我实现了
android:onClick="@{() -> viewModel.onAddRoomClick()}"
我对我所有的Fragments 和ViewModels 都使用这种模式,我真的不知道为什么它什么都不做,vm 初始化了。在另一个 drawermenu fragment 我也有 onClick 方法,它导航到另一个片段。因此,如果有人知道会有所帮助的解决方案,请提前感谢您。
【问题讨论】: