AIDL传递对象参数

时间:2018-03-07 10:45:32

标签: java android aidl

我目前坚持使用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);
 }

每次我重建项目时都会说

  

错误:aidl E 03-07 17:18:19 14651 1413571 type_namespace.cpp:129]未知类型

1 个答案:

答案 0 :(得分:0)

SongItem类的包必须与Java和AIDL完全匹配,MyAIDL.aidl文件必须导入类(这就是为什么你有SongItem.aidl文件声明的原因该课程为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