Android Fragments 从片段访问Activity中的视图的最佳实践?

km0tfn4u  于 9个月前  发布在  Android
关注(0)|答案(1)|浏览(103)

我在寻求一个基本概念的澄清。如何最好地从片段访问Activity中的视图?
目前,我知道两种方法:
使用片段调用Activity的findViewById。
使绑定公开并访问它,如:活动.绑定.示例。
哪一个是最佳实践,或者还有其他更有效的方法?

tag5nh1u

tag5nh1u1#

这两种方法的缺点是它将活动和片段紧密耦合。如果您稍后决定您的片段需要由多个Activity托管,您将遇到问题。使用接口可以帮助解决这个问题,但只是在一定程度上。
一个更灵活的解决方案是创建一个小的专用视图模型类,表示片段和活动之间的桥梁。如果您将其设置为共享视图模型,则片段和Activity将共享示例。然后,您可以使用典型的React式通信(LiveData、RxJava、KotlinFlow等)让片段间接更新Activity的状态。现在,所有消费者(Activity、父片段、对等片段)需要做的就是共享相同的视图模型并观察React状态,然后更新它们的UI以匹配。

相关问题