android - use one fragment with different data in viewPager doesn't work -
this viewpager
private class viewpageradapter extends fragmentpageradapter{ private final list<fragment> mfragmentlist = new arraylist<>(); private final list<string> mfragmenttitlelist = new arraylist<>(); viewpageradapter(fragmentmanager fm) { super(fm); } @override public fragment getitem(int position) { return mfragmentlist.get(position); } @override public int getcount() { return mfragmentlist.size(); } void addfragment(fragment fragment, string title){ mfragmentlist.add(fragment); mfragmenttitlelist.add(title); } @override public charsequence getpagetitle(int position){ return mfragmenttitlelist.get(position); } }
and in main activity,
public void setupviewpager() { viewpageradapter adapter = new viewpageradapter(getsupportfragmentmanager()); adapter.addfragment(nowplayingfragment.newinstance(0), getstring(r.string.now_playing)); adapter.addfragment(nowplayingfragment.newinstance(1), getstring(r.string.up_coming)); adapter.addfragment(nowplayingfragment.newinstance(2), getstring(r.string.popular)); mviewpager.setadapter(adapter);
and fragment.
public static nowplayingfragment newinstance(int titleid){ nowplayingfragment fragment = new nowplayingfragment(); bundle args = new bundle(); args.putint("title_flag", titleid); nowplayingfragment.titleid = titleid; fragment.setarguments(args); return fragment; } @override public void oncreate(@nullable bundle savedinstancestate) { super.oncreate(savedinstancestate); args = savedinstancestate; mcontext = getcontext(); } @nullable @override public view oncreateview(layoutinflater inflater, @nullable viewgroup container, @nullable bundle savedinstancestate) { view view = inflater.inflate(r.layout.fragment_now_playing, container, false); munbinder = butterknife.bind(this, view); map<string, string> querystring; querystring = apiutils.getquerystrings(mcontext); uri uri; int titleid1 = 0; if (args != null) { titleid1 = args.getint("title_flag"); } log.d("tag", "titleid = " + titleid1); switch (titleid1){ case 0: uri = apiutils.getnowplayinguri(mcontext, querystring); break; case 1: uri = apiutils.getupcominguri(mcontext, querystring); break; case 2: uri = apiutils.getpopularuri(mcontext, querystring); break; default: uri = apiutils.getnowplayinguri(mcontext, querystring); break; } new loaddiscoverlist(getcontext()).execute(uri); return view; }
i try list 3 different movie list (now playing, upcoming, popular). shows playing list on 3 pages.
it seems passing data main activity fragment not working property, or store fragment argument problem. can't find cause issue , don't know how fix it.
the problem here args = savedinstancestate;
should args = getarguments();
- @ present default list in switch statement honoured. savedinstancestate
configuration changes, want fragment arguments added static fragment generator method.
Comments
Post a Comment