MainFragment
启动FragA
,启动FragB
,午餐FragC
。
在FragB
上按返回按钮应转到FragA
,在FragC
上按返回键也应转到FragA
。
FragB
是isToAddToBackStack
是false
的唯一一个。
childFragmentManager.commit {
replace(containerViewId, fragment, fragment::class.java.name)
if (isToAddToBackStack) {
addToBackStack(backStateName)
}
}
只要在FragC
上按下后退按钮,就会显示FragB
:
if (childFragmentManager.backStackEntryCount > 1) {
childFragmentManager.popBackStack()
return
}
实现我期望的导航的更好方法是什么?
答案 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()