android - 此 NavController 不知道导航目的地 xxx
问题描述
我有一个从 HomeFragment(navigationcontroller 的一部分)打开的 bottomSheetDialogFragment。我希望通过点击 bottomSheetDialogFragment 内的按钮打开另一个目的地,但这样做会给我“此 NavigationController 未知的目的地”
HomeFragment.kt
override fun onClick(view: View?) {
when (view) {
binding.ivBacktrack -> {
val upgradePremBottomSheet =
UpgradePremiumMembershipBottomSheetDialogFragment.newInstance()
upgradePremBottomSheet.show(childFragmentManager, null)
}
binding.ivInterested -> displayToast()
binding.ivNotInterested -> displayToast()
binding.ivMessage -> {
val directMessageBottomSheet = DirectMessageBottomDialogFragment.newInstance()
directMessageBottomSheet.show(childFragmentManager, "Direct Message Bottom Sheet")
}
}
}
DirectMessageBottomDialogFragment.kt
class DirectMessageBottomDialogFragment : BottomSheetDialogFragment(), View.OnClickListener {
lateinit var binding: LayoutDirectMessageLimitReachedBottomSheetBinding
companion object{
fun newInstance(): DirectMessageBottomDialogFragment{
return DirectMessageBottomDialogFragment()
}
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = LayoutDirectMessageLimitReachedBottomSheetBinding.inflate(inflater,container,false)
binding.clDmLimitReachedBottomSheet.setBackgroundColor(ContextCompat.getColor(
context!!, R.color.background_black
))
return binding.root
}
override fun onStart() {
super.onStart()
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.tvGetPremiumMembership.setOnClickListener(this)
binding.tvPurchaseDmPacks.setOnClickListener(this)
binding.ivClose.setOnClickListener(this)
}
override fun onClick(v: View?) {
when(v){
binding.tvGetPremiumMembership -> findNavController().navigate(R.id.action_directMessageBottomDialogFragment_to_paymentFragment)
binding.tvPurchaseDmPacks -> findNavController().navigate(R.id.action_directMessageBottomDialogFragment_to_dmPackFragment)
binding.ivClose -> dismiss()
}
}
}
任何帮助表示赞赏
解决方案
你能提供你的导航图xml文件吗?问题是您正在尝试使用未在与您的 BottomSheetDialog 关联的导航图 xml 文件中定义的操作进行导航。尝试替换findNavController().navigate()
,requireView().findNavController().navigate()
看看它是否有效。
推荐阅读
- javascript - 使用变量 JavaScript/jQuery 从 JSON 获取数据
- python-3.x - 保存 matplotlib 动画时出错,缺少“dpi”参数
- go - 使用非指针接收器接口实现的 Go 反射设置字段值
- excel - 需要在函数调用后应用等待,以便在第一个函数执行后调用下一个函数
- excel - Excel:根据一致的单元格值将一列中的堆叠数据转置为多行
- angular - 注入动态创建的组件时,Angular ActivatedRoute 数据保持不变
- angular - 切换Material Sidenav时如何调用影响多个组件的方法?
- python-3.x - 在 virtualenv 中,我收到“ModuleNotFoundError: No module named 'rets.client'; 'rets' is not a package”
- matlab - 满足特定标准的最小值的 MATLAB 索引
- uml - 在我的用例中,我如何表示谁在执行操作?