I am using ViewPager with Tablayout in my app. Tablayout has four tabs each with different fragments.
I want to set current item to the viewpager based on certain values from the Interface. the following works as desired if I start the app for first time, but after I close and open the activity the expected behavior doesn't occurs.
Below is the code I am using.
@Override
public void getNotify(int type) { // overriden method of the Interface.
System.out.println("getNotify ========>"+type);
switch (type){
case 0:
new Handler().post(new Runnable() {
@Override
public void run() {
try {
viewPager.setCurrentItem(0);
}catch (Exception e){
e.printStackTrace();
}
}
});
break;
case 1:
new Handler().post(new Runnable() {
@Override
public void run() {
try {
viewPager.setCurrentItem(1); //switch - case works fine but this code is not setting currentItem.
}catch (Exception e){
e.printStackTrace();
}
}
});
break;
case 2:
new Handler().post(new Runnable() {
@Override
public void run() {
viewPager.setCurrentItem(2);
}
});
break;
case 3:
new Handler().post(new Runnable() {
@Override
public void run() {
viewPager.setCurrentItem(3);
}
});
break;
}
}
------------onResume()-----------------
@Override
protected void onResume() {
super.onResume();
viewPager = (ViewPager) findViewById(R.id.pager);
setupViewPager(viewPager); //this method will setViewPager
tabLayout = (TabLayout) findViewById(R.id.tab_layout);
tabLayout.setupWithViewPager(viewPager);
}
----------setupViewPager()--------------
private void setupViewPager(ViewPager viewPager) {
Bundle bundle = new Bundle();
bundle.putInt("MEASURE_TYPE", MEASURE_TYPE);
adapter = new ViewPagerAdapter(getSupportFragmentManager());
TabFragment1 tab1 = new TabFragment1();
tab1.setArguments(bundle);
adapter.addFragment(tab1, "MIC");
TabFragment2 tab2 = new TabFragment2();
tab2.setArguments(bundle);
adapter.addFragment(tab2, "Headset");
TabFragment3 tab3 = new TabFragment3();
tab3.setArguments(bundle);
adapter.addFragment(tab3, "BT");
TabFragment4 tab4 = new TabFragment4();
tab4.setArguments(bundle);
adapter.addFragment(tab3, "Speaker");
viewPager.setAdapter(adapter);
}
All the above code is in same Mainactivity.java
file.
I have referred many SO threads and tried many solutions provided but nothing helps. following are some of the SO threads I tried.
Android ViewPager setCurrentItem not working after onResume.
ViewPager SetCurrentItem does not set the position after it is clicked.
Also there is a similar bug opened at AOSP but there is no response over there also.
Any help Appreciated. Thanks!