导航组件 popUpTo bug
navigation component popUpTo bug
最近我 运行 遇到了我问的关于 here
的问题
但是当我试图弄清楚发生了什么时,我总是会遇到同样的问题。
这就是我所拥有的 - 我有一个 collection、预览、编辑片段,我需要在它们之间导航。
但是在从编辑片段导航到预览片段后,我希望后退按钮将用户带到 collection 片段而不是编辑片段,它确实这样做了,但是当试图进一步导航时它崩溃了,因为目的地据说是(view_fragment)。为什么会这样,是不是某种错误?
<fragment android:id="@+id/collection_fragment">
<action
android:id="@+id/action_collection_fragment_to_view_fragment"
app:destination="@+id/view_fragment" />
</fragment>
<fragment android:id="@+id/view_fragment">
<action
android:id="@+id/action_view_fragment_to_edit_fragment"
app:destination="@id/edit_fragment" />
<argument android:name="item" />
</fragment>
<fragment android:id="@+id/edit_fragment">
<action
android:id="@+id/action_edit_fragment_to_view_fragment"
app:destination="@id/view_fragment"
app:popUpTo="@id/collection_fragment" />
<argument android:name="item" />
</fragment>
编辑:
堆栈跟踪:
java.lang.IllegalArgumentException: navigation destination com.domain.application:id/action_collection_fragment_to_view_fragment is unknown to this NavController
at androidx.navigation.NavController.navigate(NavController.java:669)
at androidx.navigation.NavController.navigate(NavController.java:628)
at com.domain.application.CollectionFragment$onActivityCreated.onChanged(CollectionFragment.kt:126)
at com.domain.application.CollectionFragment$onActivityCreated.onChanged(CollectionFragment.kt:28)
at com.domain.application.common.SingleLiveEvent$observe.onChanged(SingleLiveEvent.kt:20)
at android.arch.lifecycle.LiveData.considerNotify(LiveData.java:109)
at android.arch.lifecycle.LiveData.dispatchingValue(LiveData.java:126)
at android.arch.lifecycle.LiveData.setValue(LiveData.java:282)
at android.arch.lifecycle.MutableLiveData.setValue(MutableLiveData.java:33)
at com.domain.application.common.SingleLiveEvent.setValue(SingleLiveEvent.kt:27)
at android.arch.lifecycle.LiveData.run(LiveData.java:87)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6938)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
这是 alpha04 版本中的错误,已在 alpha05 中修复https://issuetracker.google.com/issues/111907708
最近我 运行 遇到了我问的关于 here
的问题但是当我试图弄清楚发生了什么时,我总是会遇到同样的问题。
这就是我所拥有的 - 我有一个 collection、预览、编辑片段,我需要在它们之间导航。
但是在从编辑片段导航到预览片段后,我希望后退按钮将用户带到 collection 片段而不是编辑片段,它确实这样做了,但是当试图进一步导航时它崩溃了,因为目的地据说是(view_fragment)。为什么会这样,是不是某种错误?
<fragment android:id="@+id/collection_fragment">
<action
android:id="@+id/action_collection_fragment_to_view_fragment"
app:destination="@+id/view_fragment" />
</fragment>
<fragment android:id="@+id/view_fragment">
<action
android:id="@+id/action_view_fragment_to_edit_fragment"
app:destination="@id/edit_fragment" />
<argument android:name="item" />
</fragment>
<fragment android:id="@+id/edit_fragment">
<action
android:id="@+id/action_edit_fragment_to_view_fragment"
app:destination="@id/view_fragment"
app:popUpTo="@id/collection_fragment" />
<argument android:name="item" />
</fragment>
编辑:
堆栈跟踪:
java.lang.IllegalArgumentException: navigation destination com.domain.application:id/action_collection_fragment_to_view_fragment is unknown to this NavController
at androidx.navigation.NavController.navigate(NavController.java:669)
at androidx.navigation.NavController.navigate(NavController.java:628)
at com.domain.application.CollectionFragment$onActivityCreated.onChanged(CollectionFragment.kt:126)
at com.domain.application.CollectionFragment$onActivityCreated.onChanged(CollectionFragment.kt:28)
at com.domain.application.common.SingleLiveEvent$observe.onChanged(SingleLiveEvent.kt:20)
at android.arch.lifecycle.LiveData.considerNotify(LiveData.java:109)
at android.arch.lifecycle.LiveData.dispatchingValue(LiveData.java:126)
at android.arch.lifecycle.LiveData.setValue(LiveData.java:282)
at android.arch.lifecycle.MutableLiveData.setValue(MutableLiveData.java:33)
at com.domain.application.common.SingleLiveEvent.setValue(SingleLiveEvent.kt:27)
at android.arch.lifecycle.LiveData.run(LiveData.java:87)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6938)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
这是 alpha04 版本中的错误,已在 alpha05 中修复https://issuetracker.google.com/issues/111907708