OnQueryTextListener,无法访问类成员(我的回收器视图或适配器出现空指针异常)



我有一个片段,它在viewPager中实现SearchView.OnQueryTextListener。每次搜索文本更改时都会正确调用CCD_ 2(我可以记录它,它工作得很好)。问题是,当我试图调用RecyclerView适配器的公共函数时,比如:

@Override
    public boolean onQueryTextChange(String newText) {
        Log.i("", "search newText " + newText);
        if(mMembersRecyclerAdapter!=null){
            mMembersRecyclerAdapter.filterSearch(newText);
        }
        //((MembersRecyclerAdapter) mRecyclerView.getAdapter()).filterSearch(newText);
        return true;
    }

它总是空的,即使我的适配器明确不是空的,因为我的RecyclerView工作正常。。。我的mRecyclerView也是一样,总是空的。。

我不确定在这个主题中显示我的代码的哪一部分是有用的。免费订阅,问我你想看什么。

--编辑,我添加Listener的方式,显然不是最佳的,也许问题来自于此:

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

  @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指出这一点。

最新更新