【问题标题】:How to start a Fragment after SearchView inputSearchView 输入后如何启动 Fragment
【发布时间】:2015-07-11 20:25:40
【问题描述】:

说实话,我不知道这个问题的标题应该写什么,因为它有点复杂。

我有一个活动、一个片段和一个适配器。

Activity 有一个ViewPager,其中的适配器是一个FragmentStatePagerAdapter,并且根据选定的项目或位置,它会创建一个新的片段实例。

片段适配器加载RecyclerView 中的项目列表。 FragmentStatePagerAdapter 中的每个新实例都是 RecyclerView 的不同字符串数组。

我在工具栏中为活动设置了一个搜索视图,当搜索中有输入时,它应该在片段中启动一个函数。

这些是片段中作为搜索侦听器的函数

@Override
    public boolean onQueryTextSubmit(String s) {
        return false;
    }

    @Override
    public boolean onQueryTextChange(String s) {
        performSearch(s);
        return false;
    }

    @Override
    public boolean onClose() {
        performSearch(null);
        return false;
    }

    private void performSearch(final String query) {
        if (mTimer != null) {
            mTimer.cancel();
            mTimer.purge();
        }
        mTimer = new Timer();
        mHandler = new Handler();
        mTimer.schedule(new TimerTask() {
            @Override
            public void run() {
                mHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        mAdapter.filter(query);
                    }
                });
            }
        }, 150);
    }

问题是我不知道如何获取当前片段,所以我可以设置fragment.onQueryTextChange(searchInput) 并阻止它创建片段的新实例。

简而言之,我想要做的是能够获取具有已定义实例的片段,并使其在搜索输入中的同一活动和页面中过滤实例中定义的数组以及搜索输入中的文本ViewPager

我不知道我是否足够清楚。但如果您能提供帮助,我将不胜感激。

【问题讨论】:

    标签: android android-fragments android-recyclerview searchview fragmentstatepageradapter


    【解决方案1】:

    我不确定,您正在寻找哪个片段。 您可以使用getFragmentManager().findFragmentById(R.id.container) 从活动中获取片段,或者使用mAdapter.getItem(position) 从适配器中获取片段。然后确保您可以使用instanceof 检查片段类别,然后调用您想要的任何方法。

    【讨论】:

    • 我有一个 ViewPager,它的适配器是 FragmentStatePagerAdapter
    • 哪里有问题?您可以使用 getItem() 从适配器获取片段
    猜你喜欢
    • 2016-02-22
    • 2016-12-19
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-21
    • 1970-01-01
    相关资源
    最近更新 更多