场景:您有两个 fragment , fragment A 填充 ListAdapter, fragment B 包含带有 ListAdapter 的 SearchView。
问题:Fragment A 如何更新 Fragment B 的 SearchView 的 ListAdapter?
最佳答案
fragment 不应直接通信。您应该使用您的 Activity 在子 fragment 之间进行通信。您可以创建一个接口(interface)来定义 fragment 之间的通信契约。
public interface UpdateSerachViewList {
void update(List<> data);
}
Activity 将实现此接口(interface)。 Activity 可以访问fragment1 和fragment 2。
如果您想从frag1发送消息到frag2,那么fragment1将在onAttach方法中将 Activity (Context参数)保存为UpdateSerachViewList处理程序。
public class Frag1 extends Fragment {
private UpdateSerachViewList mCallback;
@Override
public void onAttach(Context context) {
super.onAttach(context);
mCallback = (UpdateSerachViewList) context;
// If exception is throws it measn you want to use frafgment with activity which does not implement communication contract. Design error
}
@Override
public void onStart() {
super.onStart();
mCallback.update(...);
}
}
在 Activity 中,您可以在 Fragment2 上调用您想要的方法。或者你可以让frag2也实现合约,这样你就不必直接引用Frag2,而只需引用通信合约。
关于java - 从 FragB 中的 ListAdapter 更新 FragA 中的 SearchView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44254442/