signup screen login screen我实现了身份验证屏幕包含片段(loginFragment,SignUpFramgent)使用viewpager,SignUpFragment包含三个片段的注册步骤,我想要处理每个注册片段的背压,当用户在第一个注册片段,并按下返回开关登录frag
我的身份验证活动
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_authentication);
setSupportActionBar(toolbar);
//assign the views
toolbar=findViewById(R.id.authToolBar);
viewPager=findViewById(R.id.view_pager);
tableLayout=findViewById(R.id.tabLayout);
//add fragments to the adapter and attact them to viewPager
TabAdapter tabAdapter=new TabAdapter(getSupportFragmentManager());
tabAdapter.addFragment(new LoginFragment(),"Login");
tabAdapter.addFragment(new SignUpFragment(),"Sign Up");
viewPager.setAdapter(tabAdapter);
tableLayout.setupWithViewPager(viewPager);
}
@Override
public void onBackPressed() {
switch (viewPager.getCurrentItem()){
case 0:
finish();
return;
case 1:
viewPager.setCurrentItem(0);
return;
}
super.onBackPressed();
}
}
我的signUp片段
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view= inflater.inflate(R.layout.fragment_sign_up, container, false);
//assign the views
button=view.findViewById(R.id.btn_sign_up);
stateProgressBar=view.findViewById(R.id.your_state_progress_bar_signUp);
fragmentManager=getChildFragmentManager();
fragmentHelper =new FragmentHelper();
//default fragment is PersonalInfoFragment
if (savedInstanceState==null){
fragment=new PersonalInfoSignUpFragment();
fragmentHelper.setFragment(fragment,R.id.sign_up_container,fragmentManager,"personal");
stateProgressBar.setStateDescriptionData(descriptionData);
stateProgressBar.setCurrentStateNumber(StateProgressBar.StateNumber.ONE);
}
button.setOnClickListener(this);
return view;
}
@Override
public void onClick(View v) {
progressNumber=stateProgressBar.getCurrentStateNumber();
//on click next move to next step until the last redirect to the mainActivity
if (v.getId()==R.id.btn_sign_up){
switch (progressNumber){
case 1:
fragment=new ContactSignUpFragment();
fragmentHelper.setFragment(fragment,R.id.sign_up_container,fragmentManager,"contacts");
stateProgressBar.setCurrentStateNumber(StateProgressBar.StateNumber.TWO);
return;
case 2:
fragment=new ShopSignUpFragment();
fragmentHelper.setFragment(fragment,R.id.sign_up_container,fragmentManager,"shop");
stateProgressBar.setCurrentStateNumber(StateProgressBar.StateNumber.THREE);
return;
case 3:
Intent intent=new Intent(getActivity(),MainActivity.class);
startActivity(intent);
getActivity().finish();
return;
}
}
}
}
发布于 2019-06-26 04:33:56
试试这个:
@Override
public void onBackPressed() {
if (viewPager.getCurrentItem() != 0) {
viewPager.setCurrentItem(viewPager.getCurrentItem() - 1,false);
}else{
finish();
}
}
但是不要调用super.onBackPressed()
方法。
发布于 2019-06-26 05:09:43
只是不要将Login片段添加到backstack中。如果你有问题的话。
如果你有问题,当你点击viewpagers不同的标签,然后按back,它会跳转到你之前打开的所有片段-你可以这样做:
@Override
public void onBackPressed() {
int currentItem = viewPager.getCurrentItem();
if (currentItem != 0) {
viewPager.setCurrentItem(currentItem - 1, true);
} else {
super.onBackPressed();
}
}
https://stackoverflow.com/questions/56761534
复制相似问题