Parcelable及遇到的坑

一個(gè)簡(jiǎn)單的數(shù)據(jù)類繼承Parcelable的代碼如下:

data class VideoBean(
        val duration: String,
        val score: Double,
        val description: String,
        val loadURL: String,
        val shareURL: String,
        val pic: String,
        val title: String,
        var roomId: String
) : Parcelable {
    override fun describeContents() = 0

    override fun writeToParcel(dest: Parcel, flags: Int) {
        with(this) {
            dest.writeString(duration)
            dest.writeDouble(score)
            dest.writeString(description)
            dest.writeString(loadURL)
            dest.writeString(shareURL)
            dest.writeString(pic)
            dest.writeString(title)
            dest.writeString(roomId)
        }
    }

    constructor(source: Parcel) : this(
            source.readString(),
            source.readDouble(),
            source.readString(),
            source.readString(),
            source.readString(),
            source.readString(),
            source.readString(),
            source.readString()
    )

    companion object {

        @JvmField val CREATOR: Parcelable.Creator<VideoBean> = object : Parcelable.Creator<VideoBean> {
            override fun createFromParcel(source: Parcel): VideoBean {
                return VideoBean(source)
            }

            override fun newArray(size: Int): Array<VideoBean?> {
                return arrayOfNulls(size)
            }
        }
    }
}

一級(jí)的類序列化很簡(jiǎn)單岂座。
一般如果啟動(dòng)一個(gè)Activity的時(shí)候大刊,要傳入一些數(shù)據(jù)汽纤,我會(huì)寫(xiě)一個(gè)如下的接口:

public static void launch(Context context, VideoBean videoBean) {
        Intent intent = new Intent()
                .setClass(context, VideoInfoActivity.class)
                .putExtra(EXTRA_VIDEO_BEAN, videoBean);
        context.startActivity(intent);
}

然后在Activity的onCreate()里獲取該數(shù)據(jù)videoBean = getIntent().getParcelableExtra(EXTRA_VIDEO_BEAN);
但是有的時(shí)候會(huì)發(fā)現(xiàn)獲取到的videoBean會(huì)為null魄揉,而有的時(shí)候卻不會(huì)鞍盗,一開(kāi)始遇到這類問(wèn)題的時(shí)候會(huì)很不解妇押,但仔細(xì)看log跷究,會(huì)發(fā)現(xiàn)有這么一段錯(cuò)誤日志java.lang.IllegalStateException: source.readString() must not be null,定位代碼敲霍,發(fā)現(xiàn)原來(lái)是roomId這個(gè)變量為null俊马,即有的時(shí)候服務(wù)器會(huì)沒(méi)傳數(shù)據(jù)過(guò)來(lái),導(dǎo)致該字段為null肩杈,繼而在序列化的時(shí)候出現(xiàn)了異常柴我,導(dǎo)致問(wèn)題的出現(xiàn)。
找到了問(wèn)題原因扩然,那么我們就好解決了艘儒。
1、務(wù)必讓服務(wù)器傳該字段的數(shù)據(jù)夫偶,如果為null界睁,則傳默認(rèn)值
2、重寫(xiě)該屬性的getter/setter方法兵拢,當(dāng)為null時(shí)翻斟,傳一個(gè)默認(rèn)值
3、如果該字段沒(méi)有使用说铃,則去掉該屬性
這里我暫時(shí)沒(méi)有找到怎么重寫(xiě)數(shù)據(jù)類里變量的getter/setter方法访惜,所以我采用了方案3嘹履,待以后熟悉了,再更新更好的方法债热。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末砾嫉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子阳柔,更是在濱河造成了極大的恐慌焰枢,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件舌剂,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡暑椰,警方通過(guò)查閱死者的電腦和手機(jī)霍转,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)一汽,“玉大人避消,你說(shuō)我怎么就攤上這事≌偌校” “怎么了岩喷?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)监憎。 經(jīng)常有香客問(wèn)我纱意,道長(zhǎng),這世上最難降的妖魔是什么鲸阔? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任偷霉,我火速辦了婚禮,結(jié)果婚禮上褐筛,老公的妹妹穿的比我還像新娘类少。我一直安慰自己,他們只是感情好渔扎,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布硫狞。 她就那樣靜靜地躺著,像睡著了一般晃痴。 火紅的嫁衣襯著肌膚如雪残吩。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,031評(píng)論 1 285
  • 那天愧旦,我揣著相機(jī)與錄音世剖,去河邊找鬼。 笑死笤虫,一個(gè)胖子當(dāng)著我的面吹牛旁瘫,可吹牛的內(nèi)容都是我干的祖凫。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼酬凳,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼惠况!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起宁仔,我...
    開(kāi)封第一講書(shū)人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤稠屠,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后翎苫,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體权埠,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年煎谍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了攘蔽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡呐粘,死狀恐怖满俗,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情作岖,我是刑警寧澤唆垃,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站痘儡,受9級(jí)特大地震影響辕万,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜谤辜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一蓄坏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧丑念,春花似錦涡戳、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至推正,卻和暖如春恍涂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背植榕。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工再沧, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人尊残。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓炒瘸,卻偏偏與公主長(zhǎng)得像淤堵,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子顷扩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,504評(píng)論 25 707
  • 前言 人生苦多拐邪,快來(lái) Kotlin ,快速學(xué)習(xí)Kotlin隘截! 什么是Kotlin扎阶? Kotlin 是種靜態(tài)類型編程...
    任半生囂狂閱讀 26,146評(píng)論 9 118
  • 來(lái)源與:阿里云棲 禁止用于商業(yè)用途 ps:如果需要電子書(shū) 評(píng)論你們郵箱 我會(huì)發(fā)給你們 下面感覺(jué)還是有點(diǎn)亂 目錄 一...
    小向資源網(wǎng)閱讀 7,572評(píng)論 0 12
  • 一個(gè)人走向火車(chē)站 有離家去遠(yuǎn)方發(fā)感覺(jué) 可我明明是去坐回家的火車(chē) 因?yàn)殡x你遠(yuǎn)了 來(lái)時(shí), 你忙婶芭, 走時(shí)东臀, 你也不愿意見(jiàn)...
    嘀哩哩哩哩哩滴閱讀 246評(píng)論 1 0
  • 聚完會(huì)已經(jīng)9:50了,選了一本《凱蒂和蒙娜麗莎》犀农,在這本書(shū)之前啡邑,從來(lái)沒(méi)有給她看過(guò)或介紹過(guò)名畫(huà),想起之前有堂課...
    甸媽閱讀 144評(píng)論 0 0