java - 如何正确处理一个Activity中的多个 fragment 交互监听器?

标签 java android android-fragments android-activity fragmentmanager

我有一个 Activity 和六个不同的 Fragments 附加到它。每个 fragment 都有 OnFragmentInteractionListener 接口(interface), Activity 实现所有这些监听器以接收回调。它看起来有点乱,所以我很感兴趣是否有一些模式/方法可以简化它并使其更优雅?

最佳答案

一个好的解决方案是对所有 fragment 使用相同的 OnFragmentInteractionListener,并使用每个监听器方法的一个参数(如 TAG 参数)来识别哪个 fragment 发送了操作。

举个例子:

创建一个新类,每个 fragment 都使用这个类

OnFragmentInteractionListener.java

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

在您的 Activity 中:

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
    }
    ... 
} 

您可以使用 Object 类型来传递您想要的每种类型的数据(然后,在每个 if 中,您必须将 Object 转换为所需的类型)。

使用这种方式,维护起来比有 6 个不同的监听器和一种方法要传递的每种类型的数据更容易。

希望这对您有所帮助。

关于java - 如何正确处理一个Activity中的多个 fragment 交互监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30762861/

相关文章:

Java Rest 发送 double 值

android - 以 selectableItemBackground 作为背景的形状可绘制对象

java - 如何将 listView 放入 android studio 的 ScrollView 中?

android - 在应用程序打开时加载所有 fragment

java - 当测试失败时,无法从 testnglistner ontestfailure 方法中截取屏幕截图

java - 基类和子类构造函数问题

android - 在 Activity 之间使用共享偏好

Android:屏幕旋转时的 fragment 生命周期

android - 无法使用 JSON 数据填充布局

java - 线程未正确停止