如何在一个Activity中正确处理多个片段交互侦听器?

我有一个Activity和六个不同的Fragments附加到它。 每个片段都有OnFragmentInteractionListener接口,并且活动实现所有这些侦听器以接收callback。 它看起来有点凌乱,所以我感兴趣的是有一些模式/方法来简化这一点,使更优雅?

Solutions Collecting From Web of "如何在一个Activity中正确处理多个片段交互侦听器?"

一个好的解决scheme可以是对所有片段使用SAME OnFragmentInteractionListener,并使用每个监听器方法的一个参数(如TAG参数)来标识发送动作的片段。

这里是一个例子:

创build一个新的类,每个片段使用这个类

OnFragmentInteractionListener.java

 public interface OnFragmentInteractionListener { public void onFragmentMessage(String TAG, Object data); } 

在你的活动中:

 public void onFragmentMessage(String TAG, Object data){ if (TAG.equals("TAGFragment1")){ //Do something with 'data' that comes from fragment1 } else if (TAG.equals("TAGFragment2")){ //Do something with 'data' that comes from fragment2 } ... } 

你可以使用Objecttypes来传递你想要的每种types的数据(然后,在每一个如果你必须将Object转换为必需的types)。

使用这种方式,维护比有6个不同的监听器和一个你想传递的每种types的数据的方法更容易。

希望这可以帮助。

我试图改进neonamu的答案 :

你可以像上面指定的那样定义一个接口,但是一个通用接口

 public interface OnListFragmentInteractionListener<T> { void onListFragmentInteraction(String tag, T data); } 

然后在主机活动中,您可以专门为您想要的types实现它,或者像上面为Object提供的那样:

 public class MyFragActivity implements OnListFragmentInteractionListener<Object> { ... @Override public void onListFragmentInteraction(String tag, Object data) { //do some stuff with the data } } 

这样,当你根据你的应用程序的需要实现接口时,也许你可以在另一种情况下重用这个接口。