I have NavigationDrawer
, when I select fragment with ViewPager
in first time, all work good, but if I select this item the second time or more, I see white screen, because don't call onViewCreated
at fragments in ViewPager
. How I can fix it?
Set fragment with ViewPager:
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, fragment)
.commit();
For ViewPager i used FragmentPagerAdapter:
@Override
public Fragment getItem(int position) {
Fragment fragment = null;
switch (position) {
case 0:
fragment = new Fragment1();
break;
case 1:
fragment = new Fragment2();
break;
case 2:
fragment = new Fragment3();
break;
}
return fragment;
}
Code in Fragment1
, Fragment2
and Fragment3
:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getData(); // get Data from internet
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
adapter = MyAdapter(getActivity(), R.layout.item_best, objects);
listView = (ListView) view.findViewById(R.id.listView);
listView.setAdapter(adapter);
listView.setOnItemClickListener(this);
swipeRefreshLayout = (SwipeRefreshLayout) view.findViewById(R.id.swipeRefreshLayout);
swipeRefreshLayout.setOnRefreshListener(onRefreshListener);
if (objects.size() == 0) {
swipeRefreshLayout.setRefreshing(true);
}
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
...
}
getData();
Try similarly in onCreateView