我在我的应用中使用ViewPager和Tablayout。 Tablayout有四个标签,每个标签都有不同的片段。
我想根据Interface中的某些值将当前项设置到viewpager。如果我第一次启动应用程序,以下工作将按预期工作,但在我关闭并打开活动后,预期的行为不会发生。
以下是我正在使用的代码。
@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);
}
以上所有代码都在同一个Mainactivity.java
文件中。
我已经提到了许多SO线程并尝试了许多解决方案,但没有任何帮助。以下是我尝试的一些SO线程。
Android ViewPager setCurrentItem not working after onResume。
ViewPager SetCurrentItem does not set the position after it is clicked
此外,在AOSP上也有一个类似的错误,但那里也没有回复。
任何帮助赞赏。谢谢!