java - 从 FragB 中的 ListAdapter 更新 FragA 中的 SearchView?

标签 java android fragment searchview listadapter

场景:您有两个 fragment , fragment A 填充 ListAdapter, fragment B 包含带有 ListAdapter 的 SearchView。

问题:Fragment A 如何更新 Fragment B 的 SearchView 的 ListAdapter?

enter image description here

最佳答案

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/

相关文章:

Android 阻止保存状态

android - fragment 覆盖另一个可以关闭的 fragment 向上滑动

android - 是否可以在不使用 XML 资源的情况下使用 PreferenceFragment 创建首选项屏幕?

java - 我如何从 Activity 中更改 fragment 的 TextView 文本

java - 运行忽略@Before/@After 的 Junit @Test

android - 如何从 Android 应用程序打开 Gmail 收件箱?

java - Java 电视剧的正则表达式帮助

java - 如何删除tomtom Maps sdk中的路线?

java - 带有onclicklistener的android中的警报对话框

java - 如何从重定向读取 JSF 中的 GET 请求参数