在 safeArgs 中将 ArrayList 作为参数传递

passing ArrayList as argument in safeArgs

我试图在使用 safeArgs 时将 ArrayList<String> 作为参数传递。但是当我从可序列化列表中 select 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

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

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

<argument
            android:name="teamsToAdd"
            app:argType="java.util.ArrayList" />

有没有办法在导航图的 XML 中声明数据类型?

试试这个:

<argument
    android:name="teamsToAdd"
    app:argType="string[]" />

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

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

parameterList.toTypedArray()

然后从数组返回:

receivedArray.toList()