OnQueryTextListener,无法访问 class 成员(我的 RecyclerView 或我的适配器出现空指针异常)

OnQueryTextListener, can't access class members (null pointer exception with my RecyclerView or my Adapter)

我有一个在 viewPager 中实现 SearchView.OnQueryTextListener 的片段。每次搜索文本更改时都会正确调用 onQueryTextChange(我可以记录它工作正常)。问题是,当我尝试调用我的 RecyclerView 适配器的 public 函数时,例如:

@Override
    public boolean onQueryTextChange(String newText) {
        Log.i("", "search newText " + newText);

        if(mMembersRecyclerAdapter!=null){
            mMembersRecyclerAdapter.filterSearch(newText);
        }
        //((MembersRecyclerAdapter) mRecyclerView.getAdapter()).filterSearch(newText);

        return true;
    }

它始终为 null,即使我的适配器绝对不为 null,因为我的 RecyclerView 正常工作...我的 mRecyclerView 也一样,始终为 null..

我不确定我的代码的哪一部分适合显示在本主题中。有空问我想看什么

-- 编辑,我添加监听器的方式,显然不是最优的,也许问题出在这里:

在 activity 包含片段的视图寻呼机中:

  @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        return super.onPrepareOptionsMenu(menu);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        switch (mFragmentSelected){
            case PAGE_MEMBERS:
                getMenuInflater().inflate(R.menu.main_pager_member_page, menu);
                MenuItem searchItem = menu.findItem(R.id.search);
                SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
                searchView.setOnQueryTextListener((MainPagerMembersFragment) mViewPagerAdapter.getItem(PAGE_MEMBERS));
                break;
            default:
                getMenuInflater().inflate(R.menu.main_pager, menu);
                break;
        }


        return true;
    }

谢谢,

它确实来自我编​​写 getItem() 的方式,

现在 getItem 看起来像这样:

@Override
        public Fragment getItem(int position) {
            if(!fragments.containsKey(position)){
                switch (position) {
                    case PAGE_FEED:
                        fragments.put(PAGE_FEED, MainPagerNewsFeed.newInstance());
                    case PAGE_MEMBERS:
                        fragments.put(PAGE_MEMBERS, MainPagerMembersFragment.newInstance());
                    case PAGE_NOTIFS:
                        fragments.put(PAGE_NOTIFS, MainPagerNotifsFragment.newInstance());
                    default:
                        break;
                }
            }

            return fragments.get(position);

        }

我有这个

private ArrayMap<Integer, Fragment> fragments = new ArrayMap<>(NUM_ITEMS);

作为我的 ViewPager 适配器的私有成员

感谢 Luksprog 指出这一点。