Android popBackStack显示片段未添加到Backstack

时间:2019-12-13 11:45:26

标签: android android-fragments fragment-backstack

MainFragment启动FragA,启动FragB,午餐FragC

FragB上按返回按钮应转到FragA,在FragC上按返回键也应转到FragAFragBisToAddToBackStackfalse的唯一一个。

childFragmentManager.commit {
        replace(containerViewId, fragment, fragment::class.java.name)

        if (isToAddToBackStack) {
            addToBackStack(backStateName)
        }
    }

只要在FragC上按下后退按钮,就会显示FragB

if (childFragmentManager.backStackEntryCount > 1) {
                childFragmentManager.popBackStack()
                return
}

实现我期望的导航的更好方法是什么?

1 个答案:

答案 0 :(得分:0)

片段事务可能涉及两种不同类型的标签。大多数Android开发人员最熟悉的就是Fragment标签,以后您可以通过from wtforms import ValidationError import phonenumbers def validate_phone(message='Invalid phone number.', region=None): """ This validates the phone number using the phonenumbers package. Make sure to select a default region in order to validate numbers that do not follow the international format. """ def _validate_phone(form, field): try: input_number = phonenumbers.parse(field.data, region) if not (phonenumbers.is_valid_number(input_number)): raise ValidationError(message) except: raise ValidationError(message) return _validate_phone class RegisterForm(Form): username = StringField('Username', validators=[DataRequired(), Length(min=3, max=25)]) email = StringField('Email', validators=[DataRequired(), Email(), Length(min=6, max=40)]) phone = StringField('Phone', validators=[validate_phone(region='US']) 在FragmentManager中使用它来找到特定的Fragment。当您的应用程序处于特定状态时,这对于查找Fragment很有用,但请记住,需要将Fragment添加到FragmentManager。如果您有findFragmentByTag()removed()片段,但尚未将其添加到后堆栈中,则将无法找到它。

另一种标记是BackStackRecord的名称,该名称传递到replaced()中。此名称标识特定的后向堆栈记录,该记录是特定事务中发生的记录。 addToBackStack()及其对应版本具有接受后堆栈记录名称的变体,以将后堆栈弹出到特定状态。

popBackStackImmediate()