android - Nested Fragment pager .setCurrentItem not working -
i have fragment in viewpager wich has datepicker, if user selects date picker returning via callback activity.
the activity gets viewpagercontainer of fragment , set pager day according date.
the function in container fragment succesfully reached , logs right day number, pager not updated stays on same page... no crashes or something..
my code:
mainacitivty (calls containerfragment)
public void ondatumselected(int days) { roosterpagercontainer positionrooster = (roosterpagercontainer) fragmentje; positionrooster.updatepager(days); } fragmentje set on navigationdrawer select..
case 0: getsupportactionbar().seticon(r.drawable.ic_action_time); fragment = new roosterpagercontainer();//this contianer this.fragmentje = fragment; containerfragment (set pager not working)
@injectview(r.id.vp_pages) viewpager pager; public carouselactivity theactivitiy; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); } @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view view = inflater.inflate(r.layout.roosterfragment_container, container, false); butterknife.inject(this, view); pager.setadapter(buildadapter()); pager.setcurrentitem(5000, false); pager.getadapter().notifydatasetchanged(); pager.setoffscreenpagelimit(0); homecoming view; } public void updatepager(int days) { log.e(string.valueof(days), "this logged pager dont switch???"); //pager.post(new runnable() { // public void run() { pager.setcurrentitem((5000 + days), true); pager.getadapter().notifydatasetchanged(); // } // }); } private pageradapter buildadapter() { return(new bootstrappageradapter(theactivitiy, getchildfragmentmanager())); } @override public void onattach(activity activity) { // todo auto-generated method stub super.onattach(activity); seek { theactivitiy = (carouselactivity) activity; } grab (classcastexception e) { throw new classcastexception(activity.tostring() + " ik snap er niks van"); } } childofcontainerfragment (calls mainacitivty)
onheadlineselectedlistener mcallback; public interface onheadlineselectedlistener { public void ondatumselected(int days); } @override public void ondateset(calendardatepickerdialog dialog, int year, int monthofyear, int dayofmonth) { datetime selectednow = datetime.fordateonly(year, (monthofyear+1), dayofmonth); datetime today = datetime.now(timezone.getdefault()); //if(!(selectednow.issamedayas(selected))) // int days = (selectednow.getmodifiedjuliandaynumber() - today.getmodifiedjuliandaynumber()); mcallback.ondatumselected(days); } @override public void onattach(activity activity) throws classcastexception { super.onattach(activity); seek { mcallback = (onheadlineselectedlistener) activity; } grab (classcastexception e) { throw new classcastexception(activity + " must implement onheadlineselectedlistener"); } } public class bootstrappageradapter extends fragmentpageradapter {
public bootstrappageradapter(final fragmentmanager fragmentmanager) { super(fragmentmanager); // this.ctxt = ctxt; } @override public int getcount() { homecoming 10000; } ///@override //public int getitemposition(object object){ // homecoming fragmentstatepageradapter.position_none; //} @override public fragment getitem(int position) { datetime pagerdate = datetime.now(timezone.getdefault()); datetime days = pagerdate.plusdays(position - 5000); log.e("datepager",string.valueof(days)); bundle bundle = new bundle(); bundle.putstring("date", days.format("yyyy-mm-dd").tostring()); roosterfragment roosterfragment = new roosterfragment(); roosterfragment.setarguments(bundle); homecoming roosterfragment; } }
(i alter somethings in code when post others stil same problem..)
also utilize back upwards older android devices android.v4.fragment etc..
also i'm sure int days not 0 illustration eight.
somehow it's fixed fragmentje wat not set because if forget have twice in navigation drawer fix..
case 0: getsupportactionbar().seticon(r.drawable.ic_action_time); fragment = new roosterpagercontainer(); this.fragmentje = fragment; break; case 1: getsupportactionbar().seticon(r.drawable.ic_action_time); fragment = new roosterpagercontainer(); this.fragmentje = fragment;//this not before... break; android android-activity android-fragments callback android-viewpager
No comments:
Post a Comment