gpt4 book ai didi

Android - fragment 之间的通信

转载 作者:搜寻专家 更新时间:2023-11-01 07:50:53 25 4
gpt4 key购买 nike

我正在尝试从另一个 fragment (f2) 访问一个 fragment (f1) 中的函数。看来我必须使我在 f1 中的函数公开和静态才能从 f2 访问它。

我读到过从一个 Fragment 访问另一个 Fragment 不是一个好主意,所以我尝试让 f2 访问我的 Activity,然后连接到 f1 中的函数。虽然,即使这样做,我仍然必须使我在 f1 中的函数公开和静态。

我不重复使用 Fragment,我只是将它们放在 ViewPager 中以便在 Fragment 中来回滑动。

目前我有很多静态变量,因为我必须将我的函数设为静态才能从其他 Fragment 访问它们。

我是不是用错了方法?有没有更好的办法?

提前致谢。

最佳答案

除非你能很好地控制自己所做的事情,否则你将走上一条充满痛苦的道路。

首先,通过静态方法和变量共享状态是一种相当糟糕的做事方式,静态成员将无法访问 fragment 实例中的任何内容。如果您真的认为需要使用静态方法,请不要费心将它们放在 fragment 类中。他们在那里没有提供优势。将它们放在它们都引用的公共(public)类中。

其次,如果您将 ViewPager 与 fragment 一起使用,则无法保证任何给定 fragment 的 View 层次结构在任何时刻都存在。这是因为 ViewPager 通常只会使当前页面上或距可见页面 +/- 1 偏移量的 fragment View 保持 Activity 状态。因此,如果您需要从当前 fragment 偏移 +2 处告诉 fragment ,您将无法对其进行可见的更改。

相反,最简单的做法是创建一个对象来维护您希望在 fragment 之间共享的任何状态,并让它们都对那个对象进行更改。如果您需要对其他 fragment 进行即时更改,您可以使用事件总线之类的东西将这些更改传达给其他 Activity fragment 。

您尝试做的事情通常相当复杂。期望花费大量时间设计正确的解决方案,并确保了解 fragment 和 ViewPager 的工作原理。

关于Android - fragment 之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35305776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com