首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何处理backPress viewpager片段

如何处理backPress viewpager片段
EN

Stack Overflow用户
提问于 2019-06-26 04:25:40
回答 2查看 904关注 0票数 -1

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;
        }
    }

}

}

EN

回答 2

Stack Overflow用户

发布于 2019-06-26 04:33:56

试试这个:

@Override
public void onBackPressed() {

    if (viewPager.getCurrentItem() != 0) {
        viewPager.setCurrentItem(viewPager.getCurrentItem() - 1,false);
    }else{
         finish();
    }

}

但是不要调用super.onBackPressed()方法。

票数 0
EN

Stack Overflow用户

发布于 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();
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56761534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档