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
.
我目前坚持使用 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
.