【原創(chuàng)】Android使用Snackbar類型轉(zhuǎn)換錯誤引起的思考


簡介

????????在之前的項目中使用了自定義Snackbar,今天在新項目中使用就出現(xiàn)點擊崩潰的問題吉捶。查看日志報錯堆棧信息芥颈。發(fā)現(xiàn)java.lang.ClassCastException(類轉(zhuǎn)換異常)赎败,怎么會出現(xiàn)這個錯誤呢?

報錯堆棧信息


查找原因

錯誤:LinearLayout cannot be cast to SnackbarContentLayout尽爆。

意思:LinearLayout 不能轉(zhuǎn)換為SnackbarContentLayout怎顾。

(1)根據(jù)打印出的at android.support.design.widget.Snackbar.setText(Snackbar.java:208)日志進行定位具體出錯位置:

定位具體出錯位置

(2)通過查看SnackbarContentLayout源代碼,發(fā)現(xiàn)SnackbarContentLayout是LinearLayout的子類(如下圖SnackbarContentLayout繼承圖)漱贱,然后這怎么就會轉(zhuǎn)換錯誤了呢槐雾?

SnackbarContentLayout繼承圖


(3)仔細回想一下,自定義布局里添加了圖片幅狮,并且使用的是LinearLayout(如下圖:自定義Snackbar子view布局)募强,難道這里要換成SnackbarContentLayout?更換以后也是不行崇摄,看來這不是具體出現(xiàn)的問題擎值。再分析一下

自定義Snackbar子view布局


(4)在上一個項目中使用毫無問題,怎么在這個項目中就出現(xiàn)問題了呢逐抑?對比兩個項目鸠儿,發(fā)現(xiàn)項目使用的android.support.design庫版本號不一樣,并且在新版本的代碼中有變化(如下圖:design庫的23和26版本代碼對比):

design庫的23和26版本代碼對比


繼續(xù)分析錯誤堆棧測試發(fā)現(xiàn):在“我的”界面中點擊“下一步”,再點擊“首頁”居然就彈出了提示信息“測試操作成功”进每。實際上這個提示信息是應(yīng)該在“我的”界面才會顯示的汹粤。

提示信息錯亂


最后發(fā)現(xiàn)封裝的BaseUIActivity和BaseUIFragment基類出現(xiàn)的問題

(1)查看項目代碼發(fā)現(xiàn)BaseUIFragment使用的顯示提示信息的方法showBottomNotify是用的BaseUIActivity中的

基類中封裝問題導(dǎo)致提示信息顯示錯亂


(2)導(dǎo)致類轉(zhuǎn)換異常是因為代碼中的targetView使用的BaseUIFragment中的CoordinatorLayout。由于在Activity和Fragment中進行布局使用的資源ID都是一樣的田晚,所以查找資源的方法使用的是同一個資源ID:root_parent_coordinator_layout(如下圖:通用資源Id引起的錯誤)

public?CoordinatorLayout?getRootParentCoordinatorLayout()?{

????????????if?(mRootParentCoordinatorLayout?==?null)?{

????????????????????mRootParentCoordinatorLayout?=?findViewById(R.id.root_parent_coordinator_layout);

????????????}

????????????return?mRootParentCoordinatorLayout;

}

通用資源Id引起的錯誤


最終解決方案

????????1.BaseUIFragment中使用獨立的showBottomNotify方法嘱兼;

? ? ? ?2.所有繼承自BaseUIFragment的Fragment布局文件的資源ID改為“root_fragment_parent_coordinator_layout”,同時將BaseUIFragment中的getRootParentCoordinatorLayout()方法中的資源ID修改成上面定義的ID贤徒,其實只要和繼承BaseUIActivity中的資源ID不一樣即可芹壕。

?

總結(jié):

? ?1.為了便于維護和修改(其實都是為了偷懶,哈哈哈接奈,這個接口就是這么毫無破綻……)踢涌,使用通用的資源ID對界面進行布局。

?????2.但是在使用Activity和Fragment結(jié)合的地方要慎重鲫趁,很容易導(dǎo)致View資源ID查找沖突到只問題斯嚎。好了,就和大家分享這么多了挨厚。

?????哈哈,喜歡就關(guān)注點個贊吧糠惫。

?????更多內(nèi)容持續(xù)更新疫剃,學(xué)習(xí)中,歡迎一起討論學(xué)習(xí)硼讽。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末巢价,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子固阁,更是在濱河造成了極大的恐慌壤躲,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件备燃,死亡現(xiàn)場離奇詭異碉克,居然都是意外死亡,警方通過查閱死者的電腦和手機并齐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門漏麦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人况褪,你說我怎么就攤上這事撕贞。” “怎么了测垛?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵捏膨,是天一觀的道長。 經(jīng)常有香客問我食侮,道長号涯,這世上最難降的妖魔是什么目胡? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮诚隙,結(jié)果婚禮上讶隐,老公的妹妹穿的比我還像新娘。我一直安慰自己久又,他們只是感情好巫延,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著地消,像睡著了一般炉峰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上脉执,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天疼阔,我揣著相機與錄音,去河邊找鬼半夷。 笑死婆廊,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的巫橄。 我是一名探鬼主播淘邻,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼湘换!你這毒婦竟也來了宾舅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤彩倚,失蹤者是張志新(化名)和其女友劉穎筹我,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體帆离,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡蔬蕊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了盯质。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片袁串。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖呼巷,靈堂內(nèi)的尸體忽然破棺而出囱修,到底是詐尸還是另有隱情,我是刑警寧澤王悍,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布破镰,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏鲜漩。R本人自食惡果不足惜源譬,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望孕似。 院中可真熱鬧踩娘,春花似錦、人聲如沸喉祭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽泛烙。三九已至理卑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蔽氨,已是汗流浹背藐唠。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留鹉究,地道東北人宇立。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像自赔,于是被迫代替她去往敵國和親泄伪。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,745評論 25 707
  • 眾所周知Material Design(材質(zhì)設(shè)計)是Google在2014年I/O大會上發(fā)布的一種新的設(shè)計規(guī)范匿级。一...
    _SOLID閱讀 56,984評論 49 324
  • 剛看完芮成鋼的書30而勵,一搜發(fā)現(xiàn)被捕染厅,這種迷惑感洶涌地襲來痘绎,不能堅持到底,鼓吹之后倒地又讓信任的人怎么辦肖粮,也要有個度
    厄爾多云閱讀 134評論 0 0
  • 圣蛋都過的開心嗎孤页?有收到的禮物都曬曬,讓我也高興高興 圣蛋送給我的最好的禮物是一桶海鮮泡面涩馆,二十六號凌晨一點吃...
    飯飯or稀飯閱讀 1,675評論 0 0
  • 上一章:(5)該怎么討厭你 文|中藥味的吧啦啦 2007年6月高二結(jié)束行施,暑假如約而至,林夏跟藍旭倒霉透頂?shù)膭偤迷谀?..
    河恩吶閱讀 784評論 4 3