【问题标题】:AIDL passing object parameterAIDL 传递对象参数
【发布时间】:2018-03-07 10:45:31
【问题描述】:

我目前停留在对 AIDL 使用 Object 类型。

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] 未知类型

【问题讨论】:

  • @Amir:我按照链接的指导进行操作,但出现了另一个错误:在生成的类 IPlaybackAction.java 中(重建时):找不到符号类 SongItem public void setSongList(java.util.List item) 抛出 android.os.RemoteException;
  • 在您的所有课程中都是相同的 com.example.krot.musicplayer 包名。似乎您尚未定义此变量或某些变量。
  • 你真的需要放更多的细节,比如完整的java类。
  • 是的,我有两个包:1 个在 java 文件夹中,1 个在aidl 文件夹中,它们具有相同的名称 com.example.krot.musicplayer

标签: java android aidl


【解决方案1】:

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。

【讨论】:

  • 我也这样做了,但是还是不行,还是这个错误:public void setSongList(java.util.List item) throws android.os.RemoteException ;它没有重新调整 SongItem
  • 请提供准确的构建日志
  • 1. Error:(363, 68) error: cannot find symbol class SongItem 。 2.Error:(319, 78) error: cannot find symbol class SongItem。 3.Error:Execution failed for task ':app:compileDebugJavaWithJavac'. &gt; Compilation failed; see the compiler error output for details
  • 看起来 Java vs AIDL 文件有些问题。可以是包名、树形布局等,能不能用一个小项目列个清单来说明问题?
  • 是的,你完全正确,我必须将 SongItem.aidl 和我的 SongItem.java 放在同一个包中。如果我在包 com.example.krot.musicplayer.model 中有我的 SongItem.java,那么我必须将我的 SongItem.aidl 放在包 com 中。 example.krot.musicplayer.model(当然在aidl文件夹中)。非常感谢,我解决了我的问题。
猜你喜欢
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
  • 2012-10-25
  • 2013-08-09
  • 2017-03-29
  • 2013-10-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多