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”中实例化接口。在片段中是可以的,但是在活动类中我应该做什么呢?“那个里不存在奥纳塔克。@杰西米,很抱歉我误导了你们。这是行不通的。回家后让我想想。