У меня есть следующая структура.
OnCreateView самого внешнего фрагмента;
changeFragment(new SearchDiscoverFragment(), id);
search_box.setOnSearchClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
changeFragment(new AFragment(), id);
}
});
search_box.setOnCloseListener(new SearchView.OnCloseListener() {
@Override
public boolean onClose() {
changeFragment(new BFragment(), id);
search_box.onActionViewCollapsed();
search_box.clearFocus();
return true;
}
});
return view;
По этим кодам яЯ работаю со структурой фрагмента, подобной той, которая должна появиться, как на странице поиска ИнстраграмаКогда вид поиска не щелкается, ничья 1 находится впереди, а при щелчке ничья 2 впереди.Также в viewpager есть 2 фрагмента.
Это onCreateView фрагмента, который содержит viewpager во втором рисунке.
List<Fragment> fragments = new ArrayList<>();
fragments.add(new A1Fragment());
fragments.add(new A2Fragment());
PagerAdapter pagerAdapter = new PagerAdapter (getFragmentManager(), fragments, getContext());
search_pager.setAdapter(pagerAdapter );
search_tab.setupWithViewPager(search_pager);
В фрагментах, которые находятся в viewpager, есть это;
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser && isResumed())
onResume();
}
@Override
public void onResume() {
super.onResume();
if (!getUserVisibleHint()) {
return;
}
setSearch();
}
Метод setSearch () просто заполняет представление рециркулятора во фрагментах, которые находятся в Viewpager.
Чтомоя проблема?
Когда я открываю приложение и попадаю в эту часть приложения (часть поиска), первоначально draw2 приветствует меня.Затем я нажимаю на вид поиска и открывается второй розыгрыш.Я поместил некоторый текст в представление поиска, и это точно ищет и не проблема.После того, как я нажимаю кнопку закрытия в ViewPager, приложение выглядит как первое рисование, и снова я нажимаю на представление поиска и помещаю некоторый текст, но оно больше не вызывает метод setSearch ().Так что экран просто остался пустым.
setSearch () метод;
public void setSearch() {
((android.support.v7.widget.SearchView) getParentFragment()
.getView()
.findViewById(R.id.search_box))
.setOnQueryTextListener(new android.support.v7.widget.SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(final String newText) {
// fetch data from server and put in recycler view.
return false;
}
});
}
Я думаю, что проблема в методе setUserVisibleHint.После второго поиска он не звонит, кажется.Что я могу с этим поделать?Если я не поставлю setUserVisibleHint и метод onResume, textChangedListener второго фрагмента в окне просмотра переопределяет первый.