首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >碎片跃迁

碎片跃迁
EN

Stack Overflow用户
提问于 2016-02-02 09:52:41
回答 2查看 105关注 0票数 0

我正在我的应用程序中创建一个导航流,其中我有三个片段。这是一个完整的场景

  • 片段A (Get OTP)
  • 片段B(确认OTP)
  • 片段C(更改密码)

用户导航将从片段A开始。用户将输入用户名和req以获取OTP。我们在XML布局中添加了片段A。

B片段动态添加,addToBackStack("fragmentB")也加入。因此,当我们单击“后退”按钮时,弹出回堆栈可以正常工作。

验证确认将使用户转到片段C(更改密码)屏幕,现在如果用户单击back,它应该带用户到第一个屏幕并跳过片段B。为此,如果我用片段B替换片段C,则背压片段保留在那里,不会弹回。

下面是分别添加和替换片段B和C的代码。

代码语言:javascript
复制
public void addConfirmOtpView(){
    ConfirmOTPFragment confirmOtpFragment = new ConfirmOTPFragment();
    mFragmentTransaction = mFragmentManager.beginTransaction();
    mFragmentTransaction.add(R.id.containerLayout, confirmOtpFragment, confirmOtpFragment.getClass().getSimpleName());
    mFragmentTransaction.addToBackStack(confirmOtpFragment.getClass().getSimpleName());
    mFragmentTransaction.commit();
}

public void replaceResetPasswordFragment() {
    ResetPasswordFragment resetPassword = new ResetPasswordFragment();
    mFragmentTransaction = mFragmentManager.beginTransaction();
    mFragmentTransaction.replace(R.id.containerLayout, resetPassword);
    mFragmentTransaction.commit();
}

编辑:

代码语言:javascript
复制
@Override
public void onBackPressed() {
    if (mFragmentManager != null && mFragmentManager.getBackStackEntryCount() != 0){
        mFragmentManager.popBackStack();
    }else {
        super.onBackPressed();
    }
}
EN

回答 2

Stack Overflow用户

发布于 2016-02-02 11:14:20

在维护碎片事务的当前代码的同时,仅按以下方式更改片段B的添加:

代码语言:javascript
复制
public void addConfirmOtpView(){
    ConfirmOTPFragment confirmOtpFragment = new ConfirmOTPFragment();
    mFragmentTransaction = mFragmentManager.beginTransaction();
    mFragmentTransaction.replace(R.id.containerLayout, confirmOtpFragment, confirmOtpFragment.getClass().getSimpleName());
    mFragmentTransaction.addToBackStack(confirmOtpFragment.getClass().getSimpleName());
    mFragmentTransaction.commit();
}

--这是假设您有一个用于所有片段的公共容器()。告诉我发生了什么。

希望这能有所帮助!

票数 1
EN

Stack Overflow用户

发布于 2016-02-02 10:55:32

不要在后台添加Fragment A,或者当您打开Fragment C时,清除back,当您按后退按钮时,Fragment A将被打开。答案选自https://stackoverflow.com/a/28361585/3027124

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35150027

复制
相关文章

相似问题

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