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

Popular posts from this blog

neo4j - finding mutual friends in a cypher statement starting with three or more persons -

php - How to remove letter in front of the word laravel -

minify - Minimizing css files -