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(使用前将#替换为@)