我有一个Activity
和六个不同的Fragments
附加到它上面。每个Fragment
都有一个OnFragmentInteractionListener
接口,而活动实现了所有这些侦听器以便接收回调。这看起来有点混乱,所以我想知道是否有一些模式/方法可以简化这个过程并使其更优雅?
我有一个Activity
和六个不同的Fragments
附加到它上面。每个Fragment
都有一个OnFragmentInteractionListener
接口,而活动实现了所有这些侦听器以便接收回调。这看起来有点混乱,所以我想知道是否有一些模式/方法可以简化这个过程并使其更优雅?
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
}
...
}
您可以使用 Object 类型来传递所需的任何数据类型(然后,在每个 if 语句中,您必须将 Object 转换为必要的类型)。
使用这种方法,维护比拥有6种不同的侦听器和为要传递的每种数据类型编写一个方法更容易。
希望能对您有所帮助。
我试图改进neonamu的答案:
您可以像上面指定的那样定义一个接口,但是要使用通用接口。
public interface OnListFragmentInteractionListener<T> {
void onListFragmentInteraction(String tag, T data);
}
public class MyFragActivity implements OnListFragmentInteractionListener<Object> {
...
@Override
public void onListFragmentInteraction(String tag, Object data) {
//do some stuff with the data
}
}