第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在枚舉上寫入 Parcelable 會(huì)使應(yīng)用程序崩潰

在枚舉上寫入 Parcelable 會(huì)使應(yīng)用程序崩潰

偶然的你 2023-12-13 16:25:02
dest.writeParcelable(department, flags);當(dāng)我通過意圖包裹對(duì)象時(shí),這條線導(dǎo)致應(yīng)用程序崩潰。當(dāng)我評(píng)論該行時(shí),應(yīng)用程序會(huì)通過,但當(dāng)然我沒有部門價(jià)值。public class User implements Parcelable {    public String id;    public String name;    public String email;    public Department department;    // other implementations of Parcelable protected UserVO(Parcel in) {    id = in.readString();    name = in.readString();    email = in.readString();    department = in.readParcelable(Department.class.getClassLoader());}    @Override    public void writeToParcel(Parcel dest, int flags) {        dest.writeString(id);        dest.writeString(name);        dest.writeString(email);        dest.writeParcelable(department, flags); // crashes    }}部門枚舉public enum Department implements Parcelable {    SALES("Sales", 1),    HR("Human Resources", 2),    SHIPPING("Shipping", 3),    public final String name;    public final int ordinal;    Department(String name, int ordinal) {        this.name = name;        this.ordinal = ordinal;    }    Department(Parcel in) {        name = in.readString();        ordinal = in.readInt();    }    public static final Creator<Department> CREATOR = new Creator<Department>() {        @Override        public Department createFromParcel(Parcel in) {            return Department.valueOf(in.readString()); // crash            //return new DeptEnum(in); // android studio generated code but has error: enum types may not be instantiated        }        @Override        public Department[] newArray(int size) {            return new Department[size];        }    };    @Override    public int describeContents() {        return 0;    }    @Override    public void writeToParcel(Parcel parcel, int i) {        parcel.writeString(name);        parcel.writeInt(ordinal);    }}錯(cuò)誤沒有枚舉常量 Department.Sales我從這個(gè)答案中得到了幫助return Department.valueOf(in.readString());
查看完整描述

1 回答

?
溫溫醬

TA貢獻(xiàn)1752條經(jīng)驗(yàn) 獲得超4個(gè)贊

您不需要打包序號(hào)。單獨(dú)對(duì)名稱執(zhí)行 valueOf 就可以了

但是,valueOf 的參數(shù)必須與枚舉定義的名稱完全匹配。

例如,這適用于銷售和運(yùn)輸,但不適用于人力資源

Department.valueOf(in.readString().toUpperCase());

您需要的解決方案是循環(huán)并將Department.values()值的每個(gè)名稱字段與 in.readString() 結(jié)果進(jìn)行比較

如何從 Java 枚舉的 String 值中查找它?

或者您可以像這樣使用序數(shù),盡管您正在復(fù)制序數(shù)信息并且必須保證枚舉具有連續(xù)的數(shù)字

?return?Department.values()[in.readInt()?-?1]


查看完整回答
反對(duì) 回復(fù) 2023-12-13
  • 1 回答
  • 0 關(guān)注
  • 170 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)