首先在我的Activity中写一个viewpager
<com.dyh.library.ui.login.ControlScrollViewPager android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/widget_viewpager" > </com.dyh.library.ui.login.ControlScrollViewPager>
这个是自定义类,使viewpager不可滑动。
public class ControlScrollViewPager extends ViewPager { private boolean isCanScroll = true; public ControlScrollViewPager(Context context) { super(context); } public ControlScrollViewPager(Context context, AttributeSet attrs) { super(context, attrs); } public void setScanScroll(boolean isCanScroll){ this.isCanScroll = isCanScroll; } @Override public boolean onInterceptTouchEvent(MotionEvent event) { return false; } @Override public boolean onTouchEvent(MotionEvent ev) { return false; } }
然后在Activity中定义一个方法:这个方式通过item来确定选择哪个fragment
viewPager = (ViewPager) findViewById(R.id.widget_viewpager); fragmentList = new ArrayList<>(); //验证码登陆 fragmentList.add(new FragmentPhoneLogin()); //密码登陆 fragmentList.add(new FragmentAccountLogin()); viewPager.setAdapter(new FragmentStatePagerAdapter(getSupportFragmentManager()) { @Override public Fragment getItem(int position) { return fragmentList.get(position); } @Override public int getCount() { return fragmentList.size(); } }); viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { setTabSelection(position); } @Override public void onPageScrollStateChanged(int state) { } }); findViewById(R.id.account_login).setOnClickListener(this); findViewById(R.id.phone_login).setOnClickListener(this); } public void setCurrentItem(int item) { viewPager.setCurrentItem(item,true); }
最后在fragment调用这个方法:这个id是一个Button按钮 tv_go_verification
@Override
public void onClick(View view) {
int clickId = view.getId();
if (clickId == R.id.tv_go_verification){
LoginAcitvity activity = (LoginAcitvity) getActivity();
activity.setCurrentItem(0);
}
}
最后就实现了这个简单的跳转,写的不好,见谅。