使用视图绑定访问另一个 activity 的 UI 元素

Access another activity's UI element using view binding

我有一个 activity,下面有一个按钮“下一步”,我有用于片段的 NavHostController。我正在使用该按钮使用 NavComponemts grapgh 浏览片段。我在 activity 中的按钮上设置了点击列表器,它将调用片段中的一个函数,该函数将导航到下一个片段。但是当我在最后一个片段上时,我想隐藏那个按钮。就是这个问题。

我们可以简单地使用 kotlin synthetic 访问另一个 activity 的 UI 元素。当迁移到 Jetpack 视图绑定时,我意识到 binding 是那个特定 activity 的私有,没有办法做到这一点。 没有关于此的文档

我不确定您为什么要从 Activity 或它所属的 Fragment 以外的任何地方访问任何 UI 元素或对其进行任何更改。可能会导致。错误。

仍然,如果您愿意,可以创建调用 DataBinding.setContentView() 时获得的 DataBinding 对象 public 或提供 getter 方法来访问该对象。

But When I am on last fragment I want to hide that button. That the problem.

您可以通过在父 activity 中添加一个函数(activity 具有“下一步”按钮)并在显示最后一个片段时调用它来实现此目的。

在activity中:

fun hideNextBtn() {
    binding.btnNext.isVisible = false
}

在最后一个片段中:

(requireActivity() as MainActivity).hideNextBtn()