Navigation 踩坑记录

1. 解决 navigate 重建 fragment 的一个可行办法

1). 在 navigate 时传入 NavOptions,设置 singleTop 。

navController.navigate(id, null, NavOptions.Builder().apply {

    setLaunchSingleTop(true)

}.build())

2). 在 xml 中 action 节点下设置 singleTop 属性。

<action   

    android:id="@+id/action_a"    

    app:destination="@id/a"    

    app:singleTop="true" />

2. popUpTo 和 popUpToInclusive 属性

<action

    android:id="@+id/action_a"

    app:destination="@id/a"

    app:popUpTo="@id/b"

    app:popUpToInclusive="true" />

popUpTo 表示该 action 在导航到 destination 所指定的 fragment 时,先将在栈中该属性对应的 fragment 之上的 fragment 弹出,再实例化 destination fragment 并压入栈中,popUpToInclusive 为 true 则表示 popUpTo 对应的 fragment 也一并弹出。

如:栈中存在 A、B、C 三个 fragment,入栈顺序为 :A -> B -> C

此时 navigate(R.id.action_a) 后栈顺序为:A1 -> A2

若同时设置 singleTop 为 true,则栈顺序为:A2


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。