android - ViewPage listener fired after fragment creation -
short story:
how detect viewpager page scrolling/changing before fragment lifecycle execution new page?
long story:
i have viewpager assigned fragments displayed using viewpageradapter, 1 of these fragments meant displayed different data according current page selected in pager.
for example, if current page selected 2 display a data, , if current page selected 4 display b data.
the straight forward solution set data according current page using onpagechangelistener or simpleonpagechangelistener, both not applicable fragment whole life cycle being called before of these listeners methods being called, data set after fragment creation here.
the second straight forward solution make changes after receiving call listeners bad regarding user experience , design wise.
so best way set fragment credentials when changing current page of viewpager before onresume() method of fragment executed?
what i'm doing:
in myfragment.java:
// goes here first @override public void onresume() { super.onresume(); // check data applied if(dataa) dosomething(); else dosomethingelse(); } in mainactivity.java:
pager.addonpagechangelistener(new viewpager.simpleonpagechangelistener() { @override public void onpageselected(int position) { // goes here // setting data of fragment if (position == 2) setdataa(); else (position == 4) setdatab(); } });
why don't use callback interface? if set interface, can call on fragment onattach() or want.
example implementation:
activity:
public class myactivity extends appcompatactivity implements fragmentlistener { @override public void onfragmentselected(string value) { // set data here. } public interface fragmentlistener { void onfragmentselected(string value); } } in viewpager fragments:
public class myfragment extends fragment{ @override public void onattach(context context) { super.onattach(context); if(context instanceof myactivity){ ((myactivity)context).onfragmentselected("your_identification"); } } } do in viewpager fragments fragment attached frgment onattach() itself. or choose when should called.
hope helps:)
Comments
Post a Comment