在 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()
我试图在使用 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()