AIDL传递对象参数

AIDL passing object parameter

我目前坚持使用 AIDL 的对象类型。

SongItem.java

public class SongItem implements Parcelable{

}

SongItem.aidl

// SongItem.aidl
package com.example.krot.musicplayer;

// Declare any non-default types here with import statements
parcelable SongItem;

MyAIDL.aidl

 interface IPlaybackAction {

     void setSongList(in List<SongItem> item);
 }

每次我重建项目时,它总是这样说

Error:aidl E 03-07 17:18:19 14651 1413571 type_namespace.cpp:129] unknown type

SongItem class 的包必须在 Java 和 AIDL 之间完全匹配,MyAIDL.aidl 文件必须导入 class (这就是为什么你有 SongItem.aidl 文件将 class 声明为 parcelable.

将此添加到 MyAIDL.aidl 的顶部:

import com.example.krot.musicplayer.model.SongItem;

从已删除答案中提供的包结构图像中,我可以看到 SongItem.java 与 AIDL 中的包不同。将 SongItem.aidl 文件移动到目录 src/main/aidl/com/example/krot/musicplayer/model 中,并将该文件顶部的包声明更新为 com.example.krot.musicplayer.model.