相关疑难解决方法(0)

我可以使用 safeargs 将可为空的数据类型作为参数发送吗?如果不是我该怎么办?

说我有 2 个片段。登录和主页。我将 Home 片段设置为以 userData 作为参数的全局目的地

在此处输入图片说明

如果用户还没有登录,那么它将从登录片段开始。登录并从服务器获取 userData 后,它将导航到 Home 并使用此代码传递 userData

 val home = AuthenticationFragmentDirections.actionGlobalHomeFragment(userData)
 Navigation.findNavController(view).navigate(home, navOptions)
Run Code Online (Sandbox Code Playgroud)

但问题是当用户已经登录并打开应用程序时。在这种情况下,他们将直接打开主页片段。我的应用程序因错误而崩溃

java.lang.IllegalArgumentException:缺少必需的参数“userData”并且没有 android:defaultValue

所以我假设我可以在像User? 这样的参数中设置可为空的数据类型,所以如果 Home 片段不是来自 Login 则不需要 userData

这里阅读后,我设置了这样的论点来实现User?

<argument
    android:name="userData"
    android:defaultValue="@null"
    app:argType="User"
    app:nullable="true" />
Run Code Online (Sandbox Code Playgroud)

但问题是,当我将用户数据从登录片段发送到家时,它说我有太多参数

我在gradle中使用这个

implementation "androidx.navigation:navigation-fragment-ktx:2.3.0-alpha04"
    implementation "androidx.navigation:navigation-ui-ktx:2.3.0-alpha04"
Run Code Online (Sandbox Code Playgroud)

android android-navigation android-architecture-components android-architecture-navigation android-jetpack-navigation

1
推荐指数
1
解决办法
2338
查看次数