选项卡选择器不适用于 viewpager 和 SlidingTabLayout 的上一次点击

Tab Selector is not working on previous click with viewpager and SlidingTabLayout

我正在尝试使用 SlidingTabLayout 实现 viewpager。向前单击与选项卡选择器一起使用。但是以前的点击不起作用。它只是显示上一个选择的选项卡。我已经提到了论坛上提出的类似问题。提供的解决方案对我不起作用。我试图让它从过去 3 天开始工作,但没有任何成功。

gradle file:-
compile 'com.android.support:appcompat-v7:21.0.3'
compile "com.android.support:support-v4:21.+"

代码片段:-

ViewPagerAdapter.java

public class ViewPagerAdapter extends FragmentPagerAdapter {

    final int PAGE_COUNT =8;
    private String titles[] ;

    public ViewPagerAdapter(FragmentManager fm, String[] titles2) {
        super(fm);
        titles=titles2;

    }


    @Override
    public Fragment getItem(int position) {
        switch (position) {
            // Open FragmentTab1.java
            case 0:
                return SampleFragment.newInstance(position);

            case 1:
                return SampleFragment.newInstance(position);

            case 2:
                return SampleFragment.newInstance(position);
            case 3:

                return SampleFragment.newInstance(position);
            case 4:
                return SampleFragment.newInstance(position);
            case 5:
                return SampleFragment.newInstance(position);
            case 6:
                return SampleFragment.newInstance(position);
            case 7:
                return SampleFragment.newInstance(position);

        }
        return null;
    }

    public CharSequence getPageTitle(int position) {
        return titles[position];
    }

    @Override
    public int getCount() {
        return PAGE_COUNT;
    }



}

SampleFragment.java

public class SampleFragment extends Fragment {

    private GridView mGridView;


    private static final String ARG_POSITION = "position";

    private int position;

    public static SampleFragment newInstance(int position) {
        SampleFragment f = new SampleFragment();
        Bundle b = new Bundle();
        b.putInt(ARG_POSITION, position);
        f.setArguments(b);
        return f;
    }



    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        position = getArguments().getInt(ARG_POSITION);


        switch (position) {

            case 0:
            case 1:

                Log.e("SampleFragment", "0");
                getActivity().getSupportFragmentManager().beginTransaction().replace( R.id.container, GalleryFragment.getInstance(position) ).commit();

                break;


            case 2:

                getActivity().getSupportFragmentManager().beginTransaction().replace( R.id.container, TextTutorialFragment.getInstance(position) ).commit();

                Log.e("SampleFragment", "2");
                break;
            case 3:

                Log.e("SampleFragment", "3");
                break;

            case 4:

                Log.e("SampleFragment", "4");
                break;

            case 5:

                Log.e("SampleFragment", "5");
                break;
        }

        //return rootView;
        return null;
    }
}

MainActivity.java

 ViewPager pager;
 private String titles[] = new String[]{"Tab1", "Tab2", "Tab3", "Tab4"
            , "Tab5", "Tab6", "Tab7", "Tab8"};

SlidingTabLayout slidingTabLayout;
pager = (ViewPager) findViewById(R.id.viewpager);

slidingTabLayout = (SlidingTabLayout) findViewById(R.id.sliding_tabs);
pager.setAdapter(new ViewPagerAdapter(getSupportFragmentManager(), titles));
slidingTabLayout.setViewPager(pager);
slidingTabLayout.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() {
            @Override
            public int getIndicatorColor(int position) {
                return Color.WHITE;
            }
        });

Activity_Main.xml

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:background="?attr/colorPrimary"
        android:minHeight="?android:attr/actionBarSize" />



    <com.invensini.UTL.views.SlidingTabLayout
        android:id="@+id/sliding_tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/colorPrimaryDark"
        android:paddingLeft="20dp"
        android:paddingRight="20dp" />



    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="0px"
        android:layout_weight="1"
        android:background="@android:color/white"
        />

     <android.support.v4.widget.DrawerLayout
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <FrameLayout
            android:id="@+id/container"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

        <com.invensini.UTL.views.DrawerNavigationListView
            android:id="@+id/drawer"
            android:layout_width="240dp"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:background="@android:color/white"/>

    </android.support.v4.widget.DrawerLayout>

</LinearLayout>

当我在点击 tab2 后点击 Tab1 时,我在 android 监视器中看到以下日志:-

11-15 10:19:09.751 339-415/? W/AudioTrack: AUDIO_OUTPUT_FLAG_FAST denied by client
11-15 10:19:11.141 339-415/? W/AudioTrack: AUDIO_OUTPUT_FLAG_FAST denied by client

我正在使用以下示例中的代码:-

https://github.com/tekinarslan/AndroidMaterialDesignToolbar

请帮忙。

pager.setAdapter(new ViewPagerAdapter(getSupportFragmentManager(), titles));
page.setOnPageChangeListener(new OnPageChangeListener(){})
slidingTabLayout.setViewPager(pager);

感谢 tiny Sunlight 它起作用了。你是救世主。为了解决这个问题,我工作了三天。

setOnPageChangeListener 已弃用,所以我按以下方式使用 addOnPageChangeListener。

代码片段:-

pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 

     @Override
                public void onPageSelected(int position) {

                if (position == 0) {
                        getSupportFragmentManager().beginTransaction().replace( R.id.container, Fragment1.getInstance(position) ).commit();

                }else if (position == 1){
                        getSupportFragmentManager().beginTransaction().replace( R.id.container, Fragment2.getInstance(position) ).commit();

                }else if (position == 2) {
                        getSupportFragmentManager().beginTransaction().replace( R.id.container, Fragment3.getInstance().commit();

                }
                else{
                        getSupportFragmentManager().beginTransaction().replace( R.id.container, DefaultFragment.getInstance().commit();

                }

                Log.e("Main Activity", "onPageSelected"+ position);
                }

                @Override
                public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

                    Log.e("Main Activity", "onPageScrolled"+ position);

                }

                @Override
                public void onPageScrollStateChanged(int state) {

                    Log.e("Main Activity", "onPageScrollStateChanged"+ state);

                }

            });