Android 如何使用ViewBinding从父布局访问视图?

Android 如何使用ViewBinding从父布局访问视图?,android,android-fragments,android-databinding,android-viewbinding,Android,Android Fragments,Android Databinding,Android Viewbinding,我有一个布局,其中包含一个视图寻呼机和一个晶圆厂。 视图寻呼机将片段作为页面。 我想要的是从碎片内部访问晶圆厂 片段\用户\动画\列表(父级) 这会引发空指针异常。视图不能为空 如何使用viewBinding获取对fab的引用 我找到了一个不使用视图绑定的解决方案。不知道这是不是最好的。 获取parentfragment并直接引用其视图 val fab = requireParentFragment().random_fab 然后你可以检查它是否为空,然后做任何你想做的事情 fab?.let{

我有一个布局,其中包含一个视图寻呼机和一个晶圆厂。 视图寻呼机将片段作为页面。 我想要的是从碎片内部访问晶圆厂

片段\用户\动画\列表(父级)

这会引发空指针异常。视图不能为空

如何使用viewBinding获取对fab的引用

我找到了一个不使用视图绑定的解决方案。不知道这是不是最好的。 获取parentfragment并直接引用其视图

val fab = requireParentFragment().random_fab
然后你可以检查它是否为空,然后做任何你想做的事情

fab?.let{
   //Do something
}
如果有人知道如何使用viewBinding,请告诉我

如何使用viewBinding获取对fab的引用

现在,您希望通过数据绑定从
ViewPager
页面/片段之一访问
FAB

通常情况下,视图应该在其生命周期所有者(即其活动/片段)内访问,因此父片段(承载FAB和ViewPager)的视图应该由该片段而不是页面片段来访问

您使用
requireParentFragment()
完成了一个里程碑

val fab=requireParentFragment().random\u fab

但是,您可以在父片段中创建一个方法,并从页面访问该方法,而不是直接从页面引用
FAB
。在这个方法上对FAB进行修改

通过这种方法,您可以在页面和父片段之间传递数据,而无需触摸另一个片段的片段视图

因此,在父片段中可以有一个方法:

fun changeMyFab() {
    binding.random_fab ...
}

然后从页面中调用
requireParentFragment().changeMyFab()
,您可以将一些数据作为方法参数传递以更改FAB行为。

使用binding.random\u FAB而不是binding.root.random\u FAB,这样它只显示当前布局中的视图。而不是父级布局中的视图。
val fab = requireParentFragment().random_fab
fab?.let{
   //Do something
}
fun changeMyFab() {
    binding.random_fab ...
}