AIDLファイルで自前のクラスを記載するとエラーになる

5,683 views
Skip to first unread message

hiro

unread,
Jun 28, 2010, 10:01:46 PM6/28/10
to 日本Androidの会
こんにちはヒロと申します

現在サービスを外部提供しようと思い、AIDLファイルを使った
外部IFの提供をと考えてますが、自前で作ったクラスを用いて受け渡しを
しようとしているのですが、うまくいきません

インポートを記載せずに行うと
unknown return type List<オリジナルのクラス>
がエラー表示され
ファイルの頭にインポートを記載すると
couldn't find import for class オリジナルのクラス
と怒られます(ちなみにimport java.util.ArrayList;と記載しても
同じように怒られてしまいます)。

あと、Boolean の部分でも

ちなみに
http://developer.android.com/guide/developing/tools/aidl.html

http://xfutures.jp/2009/07/18/60/
を参考に記載しました(AIDLファイル追加時に何か必要な手順が存在しているのでしょうか?)


何かお気づきの点がございましたら、コメント頂きたく

すみませんが、よろしくお願いします

なおAIDLのソースは下記です
package xxxxx.bbbbb;

interface IBOPlan30XServiceIF {
void login(String username, String password,int appid);
List<オリジナルのクラス> get(int appid);
}

hiro

unread,
Jun 28, 2010, 10:07:37 PM6/28/10
to 日本Androidの会

こんにちはヒロです

> あと、Boolean の部分でも
ってゆうところは無視してください

以上
失礼します

On 6月29日, 午前11:01, hiro <altumd...@gmail.com> wrote:
> こんにちはヒロと申します
>
> 現在サービスを外部提供しようと思い、AIDLファイルを使った
> 外部IFの提供をと考えてますが、自前で作ったクラスを用いて受け渡しを
> しようとしているのですが、うまくいきません
>
> インポートを記載せずに行うと
> unknown return type List<オリジナルのクラス>
> がエラー表示され
> ファイルの頭にインポートを記載すると
> couldn't find import for class オリジナルのクラス
> と怒られます(ちなみにimport java.util.ArrayList;と記載しても
> 同じように怒られてしまいます)。
>
> あと、Boolean の部分でも
>
> ちなみにhttp://developer.android.com/guide/developing/tools/aidl.html
> やhttp://xfutures.jp/2009/07/18/60/

ytRino

unread,
Jun 29, 2010, 7:36:26 AM6/29/10
to 日本Androidの会
はじめまして、ytRinoです。
初心者なもので深いところまでは理解し切れてませんが
ちょうど最近やってみたところなので。

オリジナルのクラスを引数や返り値に使う場合は
Parcelableインターフェースを実装する、というルールだったと思います。
そのクラスにParcelableを実装した後
そのクラスメ名と同じパッケージに同じ名前のAIDLファイルを作成して

parcelable OriginalClass; // オリジナルのクラス

を宣言してみてはいかがでしょうか。
その後もとのAIDLファイルでそのクラスをimportすればOKだと思います。

参考になれば幸いです。

--
ytRino @ biginner
http://www.google.com/profiles/ytrino

hiro

unread,
Jun 29, 2010, 9:40:17 AM6/29/10
to 日本Androidの会

こんばんわ、HIROです。
はじめましてytRinoさん

ご助言ありがとうございます。
下記内容で実装してみたところコンパイルエラーも無事に取れました。

ご協力ありがとうございました。

以上、失礼します

in...@pc-craft.co.jp

unread,
Jun 30, 2010, 10:34:20 PM6/30/10
to 日本Androidの会
HIROさん

こんにちは
ピーシークラフトです。

AIDL ファイルのクラス定義に単純に in / out 等の指定が抜けているようです。

改善例

interface IBOPlan30XServiceIF {
void login(in String username, in String password, in int appid);
List<オリジナルのクラス> get(in int appid);
}

int, String, List<Integr>, List<String> 等の単純なオブジェクトは
Parcelable インターフェースの実装は不要のようです。
Reply all
Reply to author
Forward
0 new messages