Fixed
Status Update
Comments
ap...@google.com <ap...@google.com> #2
As a workaround, your Fragment can set the arguments to an empty Bundle if it is null:
if (arguments == null) {
arguments = Bundle()
}
// Assuming myArgs is set via by navArgs()
val myArg = myArgs.myArg
if (arguments == null) {
arguments = Bundle()
}
// Assuming myArgs is set via by navArgs()
val myArg = myArgs.myArg
da...@google.com <da...@google.com> #3
Project: platform/frameworks/support
Branch: androidx-master-dev
commit d8c9982a9cac54247134252eea8d8a4cbf757e74
Author: Ian Lake <ilake@google.com>
Date: Fri Mar 15 13:21:12 2019
Avoid sending a null Bundle when NavArguments are present
When using arguments with android:defaultValue="@null",
these attributes are dropped by XmlPullParser, so the
NavArgument does not have a default value set. Change
addInDefaultArgs() to always return a non-null Bundle
if there are NavArguments set at all to ensure that
Safe Args can correctly parse the empty Bundle and
fill in the correct default values.
This also simplifies the process if you're not using
Safe Args since you can requireArguments() and the
proper gets with your default values.
Test: new AddInDefaultArgsTest parameterized test
Fixes: 128531879
Change-Id: I6ec9673100790df03b5aa1d86f74dbec70173095
A navigation/common/src/androidTest/java/androidx/navigation/AddInDefaultArgsTest.kt
M navigation/common/src/main/java/androidx/navigation/NavDestination.java
https://android-review.googlesource.com/930456
https://goto.google.com/android-sha1/d8c9982a9cac54247134252eea8d8a4cbf757e74
Branch: androidx-master-dev
commit d8c9982a9cac54247134252eea8d8a4cbf757e74
Author: Ian Lake <ilake@google.com>
Date: Fri Mar 15 13:21:12 2019
Avoid sending a null Bundle when NavArguments are present
When using arguments with android:defaultValue="@null",
these attributes are dropped by XmlPullParser, so the
NavArgument does not have a default value set. Change
addInDefaultArgs() to always return a non-null Bundle
if there are NavArguments set at all to ensure that
Safe Args can correctly parse the empty Bundle and
fill in the correct default values.
This also simplifies the process if you're not using
Safe Args since you can requireArguments() and the
proper gets with your default values.
Test: new AddInDefaultArgsTest parameterized test
Fixes: 128531879
Change-Id: I6ec9673100790df03b5aa1d86f74dbec70173095
A navigation/common/src/androidTest/java/androidx/navigation/AddInDefaultArgsTest.kt
M navigation/common/src/main/java/androidx/navigation/NavDestination.java
sk...@gmail.com <sk...@gmail.com> #4
We've fixed this for Navigation 2.1.0-alpha01 at the library level, rather than only in Safe Args. Destinations with any argument will have a non-null Bundle.
yb...@google.com <yb...@google.com>
da...@google.com <da...@google.com> #5
I'm still getting the error with "androidx.navigation:navigation-safe-args-gradle-plugin:2.1.0-alpha02"
<argument
android:name="filter"
android:defaultValue="@null"
app:nullable="true"
app:argType="***.ConsultationsFilter"
/>
---------
class TestFragment : androidx.fragment.app.Fragment() {
private val args by navArgs<TestFragment>()
...
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
....
val filter = args.filter // <-- throws null argument exception
}
<argument
android:name="filter"
android:defaultValue="@null"
app:nullable="true"
app:argType="***.ConsultationsFilter"
/>
---------
class TestFragment : androidx.fragment.app.Fragment() {
private val args by navArgs<TestFragment>()
...
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
....
val filter = args.filter // <-- throws null argument exception
}
sk...@gmail.com <sk...@gmail.com>
da...@google.com <da...@google.com> #6
upd line: private val args by navArgs<TestFragmentArg>()
Description
Version used: 2.1.0-alpha03
Devices/Android versions reproduced on: compilation error
When using suspend SELECT method with TypeConverter parameter, room-compiler generate incorrect method code with return type java.lang.Object.
Compilation exceptions:
• The query returns some columns [...] which are not used by java.lang.Object. You can use @ColumnInfo annotation on the fields to specify the mapping. You can suppress this warning by annotating the method with @SuppressWarnings(RoomWarnings.CURSOR_MISMATCH).
• Not sure how to convert a Cursor to this method's return type (java.lang.Object).
• Query method parameters should either be a type that can be converted into a database column or a List / Array that contains such type. You can consider adding a Type Adapter for this.
But when I remove suspend modifier all is ok.