我的問題似乎與this question和this one類似,但它有點不同。AIDL接口無法找到Parcelable類的導入
我正在製作一個庫項目中的AIDL服務,並在我的應用程序中使用它。我在我的應用程序中有一個類Vehicle,我已經制作了parcelable,以便可以在我的界面中使用它。 (我想從我的服務庫中獲得車輛清單到我的應用程序)
在應用程序和庫中是否需要Vehicle.java?
我是否需要兩個Vehicle.aidl?
我在應用程序和庫中都有Vehicle.java和Vehicle.aidl,我開始在我的應用程序中遇到問題,當我從我的界面調用一個方法時,我想將它定義爲庫類的Vehicle而不是應用程序(雖然它們是相同的並且都是可以分類的)。
public List<Vehicle> getVehicles(){...code... }
在努力解決這個問題,我試圖使它的應用程序的車輛類別,而不是我的IRemoteInterface.aidl圖書館的車輛類(在下面列出的變化,我得到一個錯誤,它無法找到導入,在其他變體中,例如它是List並且沒有導入,它表示未知的返回類型)。
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();
}
這裏是我parcelable汽車類從應用:
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
}
謝謝你來這裏!從應用程序中刪除車輛類?我需要在那裏使用Vehicle來做其他事情,那麼這意味着我需要將Vehicle作爲LIBRARY.Vehicle參考? 圖書館的車輛是否沒有辦法在應用程序中使用車輛?(我正在從服務中獲得車輛,我想將該車輛放入我設置的SQLite數據庫中) – benzabill
當您說「庫」時,你是指Android庫還是安裝了一個庫包?也就是說,這種設置會產生多少次? – Delyan
已安裝的庫包。這是我老闆的代碼,我正在爲我所需要的改變它。我把它設置爲依賴關係或其他任何東西(我以前成功地將庫用於其他事情) – benzabill