Android SafeArgs Array not compatible



我目前正在探索Android导航,包括使用SafeArgs,但我遇到了问题。

我尝试在导航上设置数组参数。

nav_graph.xml

<fragment android:id="@+id/firstFragment">
<action android:id="@+id/action_firstFragment_to_secondFragment">
<argument
android:name="args"
app:argType="CustomModel[]" />
</action>
</fragment>
<fragment android:id="@+id/secondFragment">
<argument
android:name="args"
app:argType="CustomModel[]" />
</fragment>

主活动.java

private List<CustomModel> dataList = new ArrayList<>();
private void getData() {
// Some API calls
dataList.clear();
dataList.addAll(result.data);
}
private void navigateToNextFragment() {
navHostController.navigate(
FirstFragmentDirections.actionFirstFragmentToSecondFragment(dataList)
);
}

并且错误error: incompatible types: List<CustomModel> cannot be converted to CustomModel[]

任何帮助,不胜感激。谢谢!

你应该像这样定义你的模型:

@Parcelize
data class CustomModel(var name: String, val age: Int): Parcelable
@Parcelize
class CustomModels: ArrayList<CustomModel>(), Parcelable

并在导航图中定义:

<argument
android:name="customModels"
app:argType="com.test.test.CustomModels"/>

相关内容

最新更新