android - Android SafeArgs 数组不兼容
问题描述
我目前正在探索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>
MainActivity.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
并在 navgraph 中定义:
<argument
android:name="customModels"
app:argType="com.test.test.CustomModels"/>
推荐阅读
- javascript - 选择包含嵌套子元素的元素
- python - 在模型上拟合数据时出错。目标输出需要匹配
- sql-server - 始终使用 sa 用户执行触发器
- angular - 如何对从服务订阅 EventEmitter 的 Angular 组件进行单元测试?
- c++ - 声明引用另一个枚举类的枚举类
- ubuntu - 无法在 Ubuntu 上为 IntelliJ Community IDE 添加桌面条目
- php - Laragon - 一个应用程序的漂亮网址不起作用
- node.js - 为什么 node-postgres 仅适用于路由
- swift - Xcode iOS 条码扫描器在后台模式下使用 Apple Vision 框架
- java - java数组无法识别最大数量的问题