Status Update
Comments
il...@google.com <il...@google.com> #2
Just to let you know that this issue present in the latest available release. I did just update to alpha09 and it breaks my code. My PagingSource if a Room backed source, but I have the same issue: the paging library failed to generate a separator for the first item.
It is still working with the alpha08.
ru...@gmail.com <ru...@gmail.com> #3
Branch: androidx-master-dev
commit aa90cc2cb835209e12964d3afbc91e96b6d4e36b
Author: Dustin Lam <dustinlam@google.com>
Date: Tue Nov 24 11:34:08 2020
Add empty terminal insert for separators support with RemoteMediator
Re-applies a previous hack which inserted empty insert events to allow
separators to add terminal separators (header / footer), since
Separators may need to wait for a LoadStateUpdate event to mark terminal
load state from RemoteMediator.
Fixes: 172254056
Test: ./gradlew paging:paging-common:test
Change-Id: I5c5f2ac3860889909a30cd322a1e7b36eec1a9fd
M paging/common/src/main/kotlin/androidx/paging/MutableLoadStateCollection.kt
M paging/common/src/main/kotlin/androidx/paging/PageEvent.kt
M paging/common/src/main/kotlin/androidx/paging/PageFetcher.kt
M paging/common/src/main/kotlin/androidx/paging/Separators.kt
M paging/common/src/test/kotlin/androidx/paging/PageFetcherSnapshotTest.kt
M paging/common/src/test/kotlin/androidx/paging/SeparatorsTest.kt
M paging/integration-tests/testapp/src/main/java/androidx/paging/integration/testapp/room/CustomerDao.java
M paging/integration-tests/testapp/src/main/java/androidx/paging/integration/testapp/v3room/NetworkCustomerPagingSource.kt
M paging/integration-tests/testapp/src/main/java/androidx/paging/integration/testapp/v3room/V3RemoteMediator.kt
M paging/integration-tests/testapp/src/main/java/androidx/paging/integration/testapp/v3room/V3RoomAdapter.kt
M paging/integration-tests/testapp/src/main/java/androidx/paging/integration/testapp/v3room/V3RoomViewModel.kt
ru...@gmail.com <ru...@gmail.com> #4
Crash on 2.3.2:
Caused by: java.lang.ClassCastException: com.navigation.sample.SingleDialogNavigator cannot be cast to androidx.navigation.fragment.DialogFragmentNavigator
at androidx.navigation.fragment.NavHostFragment.onAttachFragment(NavHostFragment.java:293)
Expected behavior: no crash as in 2.3.1
ru...@gmail.com <ru...@gmail.com> #5
il...@google.com <il...@google.com>
ap...@google.com <ap...@google.com> #6
Branch: androidx-main
commit ffe68e0a3be1da83217fadd4e40c5abad4f72b82
Author: Ian Lake <ilake@google.com>
Date: Tue Apr 06 12:40:35 2021
Use FragmentOnAttachListener in DialogFragmentNavigator
Rather than having the NavHostFragment
explicitly look for the DialogFragmentNavigator
to forward the fragment attach callback,
have DialogFragmentNavigator use the
Fragment 1.3 FragmentOnAttachListener API
to fully contain that logic within the
DialogFragmentNavigator.
Relnote: "`NavHostFragment` now supports custom
Navigators that use the same `@Navigator.Name(\"dialog\")`
as the default `DialogFragmentNavigator`."
Test: existing tests still pass
BUG: 175979140
Change-Id: Ib1c2cc38e7a621d133be1f4c3692e62913450dda
M navigation/navigation-fragment/api/public_plus_experimental_current.txt
M navigation/navigation-fragment/src/main/java/androidx/navigation/fragment/DialogFragmentNavigator.kt
M navigation/navigation-fragment/src/main/java/androidx/navigation/fragment/NavHostFragment.kt
il...@google.com <il...@google.com> #7
In the upcoming Navigation 2.4.0-alpha01
, we've updated our Fragment dependency such that we can use the 1.3.0
FragmentOnAttachListener
to handle the case where previously the NavHostFragment
needed to be involved. Thus, NavHostFragment
no longer needs to cast the Navigator returned by the dialog
name to DialogNavigator
.
As a workaround, your custom Navigator can use any name other than dialog
(say, singleDialog
) and it'll work just fine if you use that instead of dialog
.
ru...@gmail.com <ru...@gmail.com> #8
Thank you for fixing this. Would singleDialog
have to be also used in the navigation resources files? I didn't know we could create custom navigation targets with different names outside of dialog
, fragment
and activity
il...@google.com <il...@google.com> #9
The default DialogFragmentNavigator
, FragmentNavigator
, and ActivityNavigator
use the exact same @Navigator.Name
API as is available to every custom Navigator (there's no special casing on the Navigation library side), so yes, it can also be used from XML.
Description
Version used: 2.3.2
Caused by:
- NavHostFragment looks up a DialogFragmentNavigator in "onAttachFragment" and no null check is done
- A custom Dialog fragment navigator can't extend from DialogFragmentNavigator as it's a final class
Commit that introduced this:
Can the new API be used instead to fix this issue in the next alpha/beta release?
In alternative, do you suggest other workaround or should we wait and stay in 2.3.1 until this is fixed?