Viewpager没有设置viewPager.setCurrentItem()

时间:2016-06-14 11:13:16

标签: android android-fragments android-viewpager android-tablayout

我在我的应用中使用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上也有一个类似的错误,但那里也没有回复。

https://code.google.com/p/android/issues/detail?id=82002&q=viewPager.setCurrentItem()&colspec=ID%20Status%20Priority%20Owner%20Summary%20Stars%20Reporter%20Opened

任何帮助赞赏。谢谢!

0 个答案:

没有答案