【发布时间】:2018-02-28 21:44:06
【问题描述】:
我有一个片段,我正在从片段开始一个活动。现在我想从新活动中的片段中调用一个方法。
我尝试使用接口,但似乎我不能,因为我没有在片段中创建新活动的对象来让它调用setListener()。我正在使用意图来启动新活动。
我无法找到如何在新活动中获取片段实例或如何在片段中调用方法。任何帮助都会很棒!
【问题讨论】:
标签: java android android-fragments method-call
我有一个片段,我正在从片段开始一个活动。现在我想从新活动中的片段中调用一个方法。
我尝试使用接口,但似乎我不能,因为我没有在片段中创建新活动的对象来让它调用setListener()。我正在使用意图来启动新活动。
我无法找到如何在新活动中获取片段实例或如何在片段中调用方法。任何帮助都会很棒!
【问题讨论】:
标签: java android android-fragments method-call
片段与 Activity 紧密耦合。您始终需要创建 Activity 作为片段的宿主。
片段表示一个行为或用户界面的一部分 活动。您可以在单个活动中组合多个片段以 构建多窗格 UI 并在多个活动中重用片段。你 可以将片段视为活动的模块化部分,它具有 它自己的生命周期,接收自己的输入事件,你可以 在活动运行时添加或删除(有点像“子 活动”,您可以在不同的活动中重复使用)。
因此,您需要在活动之间进行通信。活动不应与它未托管的片段进行通信。但它应该与托管片段的 Activity 进行通信。
例如,
如果您有两个 Activity,即 ActivityOne 和 ActivityTwo。其中 ActivityOne 有一个名为 ActivityOneFragment 的 Fragment。
当你需要从ActivityTwo获取ActivityOneFragment时,你需要和ActivityOne通信然后告诉它获取ActivityOneFragment:
ActivityTwo -> ActivityOne -> ActivityOneFragment
你不应该这样做:
ActivityTwo -> ActivityOneFragment
【讨论】:
不,你不能那样做。因为后台活动已暂停/死亡。所以你不能访问它的方法。
如果是通用方法,你可以将该方法放在其他类中。称它为你的实用程序类。
【讨论】: