【问题标题】:Not able to use binding with navcontroller无法使用 navcontroller 绑定
【发布时间】:2021-11-27 13:32:48
【问题描述】:

代码如下:

class FirstFragment : Fragment() {

    private var _binding: FragmentFirstBinding? = null
    private val binding get() = _binding!!

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View {
        _binding = FragmentFirstBinding.inflate(inflater, container, false)
        binding.btnOpen.setOnClickListener {
            Navigation.findNavController(view).navigate(R.id.secondFragment)
        }
        return binding.root
    }

    override fun onDestroyView() {
        super.onDestroyView()
        _binding = null
    }
}

在线:Navigation.findNavController(view).navigate(R.id.secondFragment) 我收到错误,因为类型不匹配所需的视图找到了视图?

我的问题是为什么我们不能将导航控制器与视图绑定结合起来?

是否有任何资源可以学习使用视图绑定的限制

【问题讨论】:

  • 您可以将 Navigation.findNavController(view) 替换为 findNavController() 并且应该消失。
  • 我试过了。它不工作
  • 你收到错误了吗?
  • 没有出现任何错误,但点击按钮后应用程序崩溃
  • 崩溃时抛出什么异常,查看logcat。

标签: android kotlin android-fragments navigation android-viewbinding


【解决方案1】:

而不是view 使用binding.root 像这样:

Navigation.findNavController(binding.root).navigate(R.id.secondFragment)

binding.root 是对根视图的引用。

【讨论】:

  • 谢谢...这正在工作...我后来找到了相同的解决方案但忘记发布它...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-13
  • 2019-09-23
  • 2021-12-30
  • 1970-01-01
  • 2012-12-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多