选项卡选择器无法使用viewpager和SlidingTabLayout进行上一次单击



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

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

代码段:-

查看PagerAdapter.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;
    }
}

主要活动.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>

当我在点击选项卡2后点击选项卡1时,我在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);

感谢微小的阳光,它成功了。你是救世主。为了解决这个问题,我工作了三天。

setOnPageChangeListener已被弃用,所以我使用addOnPageChange监听器的方式如下。

代码段:-

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);
                }
            });

相关内容

  • 没有找到相关文章

最新更新