Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将一个事件从一个活动发送到多个片段_Android_Android Activity_Communication_Fragment - Fatal编程技术网

Android 将一个事件从一个活动发送到多个片段

Android 将一个事件从一个活动发送到多个片段,android,android-activity,communication,fragment,Android,Android Activity,Communication,Fragment,我希望我的活动将同一事件发送到多个片段。不要让我的活动调用每个片段方法:FragmentA.DoTask(),FragmentB.DoTask(),FragmentC.DoTask(),等等。。。我宁愿让我的活动只发送一个事件,然后让片段监听这个事件 在developpers文档上,他们让活动“侦听”片段,但随后活动调用片段的方法。是否有可能采用另一种方式:让片段“聆听”活动 谢谢我想没有办法解决这个问题。文档中的“倾听”一词更具隐喻性。您必须显式调用所有片段 您可以得到的最隐秘的东西是在活动类

我希望我的活动将同一事件发送到多个片段。不要让我的活动调用每个片段方法:
FragmentA.DoTask()
FragmentB.DoTask()
FragmentC.DoTask()
,等等。。。我宁愿让我的活动只发送一个事件,然后让片段监听这个事件

在developpers文档上,他们让活动“侦听”片段,但随后活动调用片段的方法。是否有可能采用另一种方式:让片段“聆听”活动


谢谢

我想没有办法解决这个问题。文档中的“倾听”一词更具隐喻性。您必须显式调用所有片段

您可以得到的最隐秘的东西是在活动类中维护一个片段列表。e、 g:创建一个定制的片段类:

public class MyFragment extends Fragment{
  public abstract void doTask();
}
从这个类继承所有的片段

public class FragmentA extends MyFragment{

  @Override
  public void doTask(){
    //exec code here

  }
}
在活动类中,每次创建片段时,也将其添加到列表中。当事件发生时,调用所有片段

public class MyActivity extends Activity{
  List<myFragment> mFragmentList = new ArrayList<MyFragment>();

  public void addFragment(MyFragment fragment){
    mFragmentList.add(fragment);
  }

  public void onEvent(){
    for(MyFragment fragment:mFragmentList){
      fragment.doTask();
    }
  }

}
公共类MyActivity扩展活动{
List MFFragmentList=新建ArrayList();
公共void addFragment(MyFragment片段){
添加(片段);
}
public void onEvent(){
for(MyFragment片段:MFFragmentList){
fragment.doTask();
}
}
}

注意:如果您没有那么多的片段,那么这个解决方案可能会有点过头。

您可以使用EventBus系统

描述(尽管此库与Android无关)精确定义它:

Eventbus是一种允许不同组件 在不了解对方的情况下相互交流。A. 组件可以向Eventbus发送事件,而不知道谁将发送 拿起它,或者有多少人会拿起它。组件也可以 收听Eventbus上的事件,而不知道是谁发送了事件。 这样,组件就可以相互通信,而不必相互依赖。 此外,替换组件也非常容易。只要新的 组件了解正在发送和接收的事件 其他组件永远不会知道

那么这里的组件到底是什么呢?嗯,一个组件可能是 任何东西在大多数EventBus中,它们都是Java对象。他们发送事件 他们也会倾听事件


您可以在Android中使用。

谢谢您的回答。我遇到了一个问题(JavanullPointerexeption)。我想这是因为我没有实例化接口。在Developpers文档中,它们在“onAttach”中实例化接口。在片段中是可以的,但是在活动类中我应该做什么呢?“那个里不存在奥纳塔克。@杰西米,很抱歉我误导了你们。这是行不通的。回家后让我想想。