我有一个bottomSheetDialogFragment,它正在从HomeFragment(Navigationcontroller的一部分)打开。我希望在单击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()
}
}
}
感谢您的帮助
答案 0 :(得分:0)
可以提供您的导航图xml文件吗?问题是您试图使用与BottomSheetDialog关联的导航图xml文件中未定义的动作进行导航。尝试将findNavController().navigate()
替换为requireView().findNavController().navigate()
,看看是否可行。