假设我有两个片段。登录和主页。我将主页片段设置为全局目标,其中包含userData作为参数。
如果用户还未登录,则会从登录片段开始。登录并从服务器获取用户数据后,代码将导航到主页并传递 userData。 val home = AuthenticationFragmentDirections.actionGlobalHomeFragment(userData)
Navigation.findNavController(view).navigate(home, navOptions)
但问题在于当用户已经登录并打开应用程序时。在这种情况下,他们将直接打开主页片段。而我的应用程序会崩溃出错。因此,我假设可以在参数中设置可为空的数据类型,如
User?
,这样如果 Home 片段不是来自登录,则不需要 userData。从 这里 读取后,我将参数设置为这样以实现 User?
。<argument
android:name="userData"
android:defaultValue="@null"
app:argType="User"
app:nullable="true" />
但问题是,当我把用户数据从登录片段发送到主页时,它说我有太多参数。我在gradle中使用了这个。
implementation "androidx.navigation:navigation-fragment-ktx:2.3.0-alpha04"
implementation "androidx.navigation:navigation-ui-ktx:2.3.0-alpha04"
apply plugin: "androidx.navigation.safeargs.kotlin"
来生成Kotlin中的Safe Args呢? - ianhanniballake.kotlin
来生成Kotlin代码。 - ianhanniballake