将 ArrayList 作为参数传递给 safeArgs

Ani*_*esh 4 android kotlin android-navigation android-safe-args android-navigation-graph

我试图ArrayList<String>在使用 safeArgs 时将 an作为参数传递。但是当我从可序列化和构建的列表中选择 ArrayList 时,它向我抛出这些异常

One type argument expected for class ArrayList<E : Any!>
One type argument expected. Use 'ArrayList<*>' if you don't want to pass type arguments
Run Code Online (Sandbox Code Playgroud)

我知道我必须为 ArrayList 设置数据类型,但在从导航图屏幕设置 safeArgs 时,我无法这样做,也没有选项。

在导航图 XML 中,代码生成为

<argument
            android:name="teamsToAdd"
            app:argType="java.util.ArrayList" />
Run Code Online (Sandbox Code Playgroud)

有没有办法在导航图的 XML 中声明 dataType?

Cam*_*lMG 16

尝试这个:

<argument
    android:name="teamsToAdd"
    app:argType="string[]" />
Run Code Online (Sandbox Code Playgroud)

您还可以Array通过在通过 GUI 生成参数时选中该选项来生成它:

在此处输入图片说明

由于这将需要字符串数组而不是列表,因此您可以使用以下命令将列表转换为数组:

parameterList.toTypedArray()
Run Code Online (Sandbox Code Playgroud)

并从一个数组返回:

receivedArray.toList()
Run Code Online (Sandbox Code Playgroud)