【发布时间】:2019-06-18 12:59:56
【问题描述】:
我在 OnBackPressedCallback 中收到 does not have a NavController set 错误。这是代码
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
fragmentView = inflater.inflate(R.layout.patient_info_fragment, container, false)
if(Utils.connectedToInternet()){
fragmentView.pastScreeningsButton.visibility = View.GONE
}
requireActivity().onBackPressedDispatcher.addCallback(object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
Navigation.findNavController(fragmentView).navigate(R.id.action_patientInfoFragment_to_patientsList)
}
})
setHasOptionsMenu(true)
return fragmentView
}
当我回到实现此功能的片段时,我只会收到此错误。
我的主页片段中有android:name="androidx.navigation.fragment.NavHostFragment"。
为了澄清,我正在使用导航控制器围绕我的应用程序进行所有导航,它工作得很好。我只在这个OnBackPressedCallback 中得到这个错误,并且只有当用户导航回实现它的片段时。
如果您需要查看我的更多代码,请告诉我。
【问题讨论】:
-
当我第一次膨胀片段布局时,我得到了片段视图。我正在使用完整的 onCreate() 更新代码。
-
我不知道我需要执行 removeCallback。我把它放在哪里?
标签: android kotlin android-architecture-components android-navigation-editor