Ошибка с преобразованием Fragment при открытом SearchView

В приложении используется ViewPager с фрагментами. При переходе с одного фрагмента на другой SearchView в зависимости от текущей выбранной вкладки исчезает или появляется. Приложение завершается при смене вкладки с открытым полем ввода для поиска и попытке получить фрагмент и вызвать функцию с передачей строки для поиска. Как это возможно отследить?

        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                searchView.clearFocus();
                return false;
            }

            @Override
            public boolean onQueryTextChange(String query) {
                if (!scrolled) {
                    PurposeNotesFragment purposeNotesFragment = (PurposeNotesFragment) adapter.getItem(viewPager.getCurrentItem()); // TODO !!!  исправить ошибку с cast
                    purposeNotesFragment.search(query);
                }
                return true;
            }
        });

        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            public void onPageScrollStateChanged(int state) {
                scrolled = false;
            }

            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                scrolled = true;
            }

            public void onPageSelected(int position) {
                scrolled = false;
                getActivity().supportInvalidateOptionsMenu();
            }
        });

java.lang.ClassCastException: com.example.projectintent.tab_fragments.PurposeNotificationsFragment cannot be cast to com.example.projectintent.tab_fragments.PurposeNotesFragment
        at com.example.projectintent.ui.purpose.PurposeFragment$1.onQueryTextChange(PurposeFragment.java:105)

Fragment


Ответы (2 шт):

Автор решения: Mark Cain

PurposeNotesFragment purposeNotesFragment = (PurposeNotesFragment) adapter.getItem(viewPager.getCurrentItem());

кажется, тут адаптер возвращает объект типа PurposeNotificationsFragment, а не PurposeNotesFragment

→ Ссылка
Автор решения: T2skler

Ответ оказался настолько очевиден, но ночью он не пришел мне на ум.

                if (viewPager.getCurrentItem() == ConstHelper.TAB_NOTES) { // если текущая вкладка NOTES
                    PurposeNotesFragment purposeNotesFragment = (PurposeNotesFragment) adapter.getItem(viewPager.getCurrentItem());
                    purposeNotesFragment.search(query);
                }

→ Ссылка