如何使用 ViewPager.OnPageChangeListener

2024-03-22

As per this https://stackoverflow.com/a/43674008/2441637接受的答案,我能够得到我的tabLyout如下:

我现在需要的是能够根据片段位置更改按钮文本,例如,如果位置为零,则Back不应出现,如果该位置是最后一个,则Next应替换为Done

我已经用过ViewPager.OnPageChangeListener但对我不起作用,下面是完整的代码:

public class Slider extends AppCompatActivity {

    private TabLayout tabLayout;
    private ViewPager viewPager;
    private Button leftBtn, rightBtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.start_up);

        leftBtn = (Button) findViewById(R.id.left_btn);
        rightBtn= (Button) findViewById(R.id.right_btn);

        viewPager = (ViewPager) findViewById(R.id.viewpager);
        setupViewPager(viewPager);

        tabLayout = (TabLayout) findViewById(R.id.tabLayout);
        tabLayout.setupWithViewPager(viewPager);
    }

   // This is not working, even the `Toast` not appearing
    private ViewPager.OnPageChangeListener listener = new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {
            Toast.makeText(Slider.this, "Current position: "+position, Toast.LENGTH_SHORT).show();
            if (position == 0) {
                leftBtn.setText("");
            }

            if (position == 3) {
                rightBtn.setText("DONE");
            }
        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    };

    private void setupViewPager(ViewPager viewPager) {
        ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
        adapter.addFrag(new Tab1(),"");
        adapter.addFrag(new Tab2(),"");
        adapter.addFrag(new Tab3(),"");
        adapter.addFrag(new Tab4(),"");
        viewPager.setAdapter(adapter);
    }

    static class ViewPagerAdapter extends FragmentPagerAdapter {
        private final List<Fragment> mFragmentList = new ArrayList<>();
        private final List<String> mFragmentTitleList = new ArrayList<>();

        public ViewPagerAdapter(FragmentManager manager) {
            super(manager);
        }

        @Override
        public Fragment getItem(int position) {
            return mFragmentList.get(position);
        }

        @Override
        public int getCount() {
            return mFragmentList.size();
        }

        public void addFrag(Fragment fragment, String title) {

            mFragmentList.add(fragment);
            mFragmentTitleList.add(title);
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return mFragmentTitleList.get(position);
        }
    }

    public void next_fragment(View view) {
        viewPager.setCurrentItem(viewPager.getCurrentItem()+1);
    }

    public void previous_fragment(View view) {
        viewPager.setCurrentItem(viewPager.getCurrentItem()-1);
    }

    public void start_app(View view) {
        startActivity(new Intent(Slider.this, TrustedNumber.class));
        finish();
    }
}

这是因为你没有在viewpager中添加监听器

viewPager.addOnPageChangeListener(listener);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 ViewPager.OnPageChangeListener 的相关文章

随机推荐