Android 如何使用ViewBinding从父布局访问视图?
我有一个布局,其中包含一个视图寻呼机和一个晶圆厂。 视图寻呼机将片段作为页面。 我想要的是从碎片内部访问晶圆厂 片段\用户\动画\列表(父级) 这会引发空指针异常。视图不能为空 如何使用viewBinding获取对fab的引用 我找到了一个不使用视图绑定的解决方案。不知道这是不是最好的。 获取parentfragment并直接引用其视图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{
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 ...
}