I have a container fragment Acadmey
which is containing a viewpager
and viewpager
consist of different child fragments
. In the child fragments of View pager I invoke the json request to get the data to be populated. For the first time every thing works fine but when I get back to main activity
and again get backs to the view pager all the content of the child fragment
is wiped out and onActivityCreated
calls only of the first time therefore my viewpagers pages are blank for every second or n times I opened . How can I save the content of the child fragment for reuse or is their any method which will defentaly been callbacked
every time when viewpager's every child fragment reopens.
My Container Fragment :-
public class Academy extends Fragment {
ViewPager viewPager = null;
TabLayout tabLayout;
MyViewPagerAdapter adapter;
private String myString = "hello";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Log.d("xx", "view started .............. papa");
return inflater.inflate(R.layout.academy, container, false);
}
@Override
public void onActivityCreated( Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
tabLayout = (TabLayout) getActivity().findViewById(R.id.tablayoutacademy);
viewPager = (ViewPager) getActivity().findViewById(R.id.academypager);
adapter = new MyViewPagerAdapter(getActivity().getSupportFragmentManager());
adapter.addfragment(new FragmentCourse(), "COURSES");
adapter.addfragment(new FragmentEducator(), "EDUCATORS");
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
}
}
My Viewpager Child Fragment(Courses)
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Log.d("xx", "view course started...........................");
progress=new ProgressDialog(getContext());
progress.setMessage("Nukeing..");
progress.show();
return inflater.inflate(R.layout.fragmentcourse, container, false);
}
@Override
public void onActivityCreated(Bundle jhoola2) {
super.onActivityCreated(jhoola2);
Log.d("xx", "acti cource started");
recyclerView = (RecyclerView) getActivity().findViewById(R.id.rv2);
manager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(manager);
recyclerView.setHasFixedSize(true);
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
MyImageCompress ic=new MyImageCompress();
Bundle bundle=new Bundle();
bundle=msg.getData();
title1 = bundle.getStringArrayList("C_name");
dec1=bundle.getStringArrayList("Discription");
image1=bundle.getStringArrayList("Image");
for (int i = 0; i < image1.size(); i++) {
imageArray1.add(ic.StringToBitMap(image1.get(i)));
Log.d( "handleMessage: "," Final parse" +i);
}
Log.d("handleMessage: EDU ", title1.size() + "" + dec1.size() + imageArray1.size());
adapter = new RecyclerAdaptra(title1, dec1, imageArray1);
progress.hide();
recyclerView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
};
GetCources gc= new GetCources(url,handler);
gc.executeRequest();
}
}
*My ViewPager Adapter *
class MyViewPagerAdapter extends FragmentPagerAdapter {
ArrayList<Fragment> fragments = new ArrayList<Fragment>();
ArrayList<String> tabtitles = new ArrayList<String>();
public void addfragment(Fragment fragments, String titles) {
this.fragments.add(fragments);
this.tabtitles.add(titles);
}
public MyViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int i) {
return fragments.get(i);
}
@Override
public int getCount() {
return fragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
return tabtitles.get(position);
}
}
When using a ViewPager
inside of a Fragment
, you need to use getChildFragmentManager()
instead of getSupportFragmentManager()
. The fragments in the pager are children of the container fragment, not of the parent context.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.