0

私の問題は、この質問この質問に似ているようですが、少し異なります。

ライブラリ プロジェクトにある AIDL サービスを作成し、それをアプリケーションで使用しています。私のアプリケーションには、インターフェースで使用できるようにパーセル化したクラス Vehicle があります。(ライブラリにあるサービスからアプリケーションへの車両のリストを取得したい)

アプリケーションとライブラリの両方に Vehicle.java が必要ですか?

両方に Vehicle.aidl が必要ですか?

アプリケーションとライブラリの両方に Vehicle.java AND Vehicle.aidl があり、アプリケーションで問題が発生し始めました。インターフェイス Eclipse からメソッドを呼び出したときに、アプリケーションではなくライブラリ クラスの Vehicle として定義する必要がありました。 (ただし、それらは同じであり、どちらも分割可能です)。

public List<Vehicle> getVehicles(){...code... }

これを解決するために、IRemoteInterface.aidl でライブラリの vehicle クラスではなく、アプリケーションの vehicle クラスにしようとしました (以下にリストされているバリエーションでは、インポートが見つからないというエラーが表示されます。他のバリエーションではリストでインポートなしのように、不明な戻り値の型と表示されます)。

  package LIBRARY;


import LIBRARY.RelPoint;
import LIBRARY.IRemoteServiceCallback;
import LIBRARY.FleetStatus;
import APPLICATION.Vehicle;


interface IRemoteInterface {

    int getPid();

    void registerCallback(IRemoteServiceCallback callback);
    void unregisterCallback(IRemoteServiceCallback callback);

    List<Vehicle> getVehicles();

}

アプリケーションからのパーセル可能な Vehicle クラスは次のとおりです

package APPLICATION;

import java.util.Date;

import android.os.Parcel;
import android.os.Parcelable;


public class Vehicle implements Parcelable {
    public static final String TAG = "Vehicle";

    long vehicleID;
    long trackID;
    String vehicleName;



     public static final Parcelable.Creator<Vehicle> CREATOR = new Parcelable.Creator<Vehicle>() {

            public Vehicle createFromParcel(Parcel src) {
                return new Vehicle(src);
            }

            public Vehicle[] newArray(int size) {
                return new Vehicle[size];
            }

        };



        public Vehicle(Parcel src) {
            readFromParcel(src);
        }

        public void writeToParcel(Parcel dest, int flags) {
            dest.writeLong(vehicleID);
            dest.writeLong(trackID);
            dest.writeString(vehicleName);
        }

        public void readFromParcel(Parcel src) {
            vehicleID = src.readLong();
            trackID   = src.readLong();
            vehicleName = src.readString();

        }

        public int describeContents() {
            // nothing special
            return 0;
        }


    public Vehicle() {

    }

    //getter and setter methods below that I removed



}
4

1 に答える 1