gpt4 book ai didi

java - 对象到 fragment 通信

转载 作者:行者123 更新时间:2023-12-02 05:00:40 24 4
gpt4 key购买 nike

我可能会错过接口(interface)的概念,因为出于某种原因,这似乎让我无法理解。这是我的场景:

期望的结果

我想要一个非 fragment/非 Activity Java 类 Routines.java触发 FragmentA 内的方法当后台线程在 Routines.java 内时已完成。

当前行为

我目前与 FragmentA 联系从里面Routines.java通过广播 FragmentA 的 Intent 已注册并正在监听。虽然这个解决方案有效,但我忍不住觉得这不是正确的方法。

问题

我想知道是否可以实现一个接口(interface),以便我可以摆脱广播 Intent ,或者通常是否有更好的方法从非 fragment/Activity 类与 fragment/Activity 进行通信。

实现从 fragment 到 Activity 的接口(interface)的解决方案不是我正在寻找的,因为我已经知道如何做到这一点,但如果通信的一侧不是 Activity 或 fragment ,我似乎无法让它工作.

我尝试过的

//in Routines.java

public class Routines implements FragmentA.OnRoutineFinishedListener

public void finished(int position){
...
}

//in FragmentA
public interface OnRoutineFinishedListener {
public void finished(int position);
}

我的主要问题是,当我无法使用 onAttach(Activity activity){ ... set up callback here by casting activity as the interface} 的典型方法时,我不确定如何调用这些方法。像这样的方法:

public void onAttach(Activity activity){
super.onAttach(activity);

try {
mCallback = (SomeFragment.SomeListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement SomeListener");
}
}

当它是 Activity 的 fragment 时,上面的代码会生成 mCallback我可以使用它,这样我就可以自由地调用实现方法,但我没有那么奢侈,因为我试图获得一个非 fragment 来触发 fragment 内的函数。

问题始终是如何实际触发 Routines 的条件最终触发finished里面的方法FragmentA 。我非常感谢您能帮助我了解如何实现这一目标。

最佳答案

你看过观察者模式吗?我认为这是正确的方法。祝你好运。

看一个例子 here

如您所见,您可以将其用于一个或多个观察者。

关于java - 对象到 fragment 通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28311099/

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