简体   繁体   English

如何使用ViewPager.OnPageChangeListener

[英]How to work with ViewPager.OnPageChangeListener

As per this accepted answer, I was able to get my tabLyout as below: 按照这个公认的答案,我能够获得如下所示的tabLyout

在此处输入图片说明

What do I need now, is to be able to change the buttons text based on the fragment position, for example if the position is zero, the Back should not appear, and if the position is the last, the Next should be replaced by Done 我现在需要的是能够根据片段位置更改按钮文本,例如,如果位置为零,则不应显示“ Back ,如果位置是最后一个,则应将“ Next替换为Done

I have used the ViewPager.OnPageChangeListener but did not work for me, below is the full code: 我使用过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);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 ViewPager.OnPageChangeListener中的片段接口 - Interface in fragment in ViewPager.OnPageChangeListener 如何拦截ViewPager.OnPageChangeListener中的触摸事件 - How to intercept touch events from ViewPager.OnPageChangeListener 带有ViewPager.OnPageChangeListener的ActionBarSherlock TabPageIndicator-标签卡住了 - ActionBarSherlock TabPageIndicator with ViewPager.OnPageChangeListener - tab is stuck Android ViewPager.OnPageChangeListener生命周期轮换问题 - Android ViewPager.OnPageChangeListener lifecycle rotation issue ViewPager.OnPageChangeListener给出错误的位置 - ViewPager.OnPageChangeListener giving wrong position ViewPager.OnPageChangeListener在ViewPager完成初始化之前运行 - ViewPager.OnPageChangeListener runs before ViewPager finish init 构造函数Intent(new ViewPager.OnPageChangeListener(){},类 <Player> )未定义 - The constructor Intent(new ViewPager.OnPageChangeListener(){}, Class<Player>) is undefined 以编程方式在ViewPager.OnPageChangeListener onPageSelected()中隐藏软键盘? - Programmatically Hide Soft Keyboard in ViewPager.OnPageChangeListener onPageSelected()? ViewPager OnPageChangeListener不起作用 - ViewPager OnPageChangeListener doesn't work Kotlin - 如何在 ViewPager 中添加 OnPageChangeListener - Kotlin - How to add OnPageChangeListener in ViewPager
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM