Unable to instantiate fragment 問題解決

最近友盟log報了一個fragment的異常燎窘,這個異常其實實屬罕見宋彼,也不容易遇到
WechatIMG17.jpeg

注意到Unable to instantiate fragment com.wonderfull.mobileshop.g.a.a: could not find Fragment constructor乓序,是說fragment不能被是實例化阳懂,那么問題來了,為什么不能被實例化呢展东,首先赔硫,fragment什么時候會被實例化,當(dāng)然是我們在代碼中去add或者replace這個fragment的時候盐肃,除此以為還有什么地方去實例化fragment嗎爪膊,有权悟,宿主Activity被銷毀后重新恢復(fù)的時候,它的fragment也會被恢復(fù)推盛,進行重新實例化峦阁,這是由系統(tǒng)來完成的,通過反射機制耘成。
好践瓷,說到這荧飞,去瞅瞅源碼晨雳,我們看看fragment的構(gòu)造函數(shù):

/**
     * Default constructor.  <strong>Every</strong> fragment must have an
     * empty constructor, so it can be instantiated when restoring its
     * activity's state.  It is strongly recommended that subclasses do not
     * have other constructors with parameters, since these constructors
     * will not be called when the fragment is re-instantiated; instead,
     * arguments can be supplied by the caller with {@link #setArguments}
     * and later retrieved by the Fragment with {@link #getArguments}.
     *
     * <p>Applications should generally not implement a constructor. Prefer
     * {@link #onAttach(Context)} instead. It is the first place application code can run where
     * the fragment is ready to be used - the point where the fragment is actually associated with
     * its context. Some applications may also want to implement {@link #onInflate} to retrieve
     * attributes from a layout resource, although note this happens when the fragment is attached.
     */
    public Fragment() {
    }

仔細看函數(shù)注解毫目,我粗略翻譯一下:

強烈推薦fragment的繼承類不要去實現(xiàn)帶參的構(gòu)造函數(shù),因為這些帶參構(gòu)造函數(shù)在fragment被再次實例化的時候?qū)⒉粫徽{(diào)用师妙,那么這些參數(shù)也就丟失诵肛,建議通過setArguments方式進行參數(shù)傳遞∧ǎ”

其實這段話還有一層意思曾掂,既然在再次實例化的時候不會調(diào)用我們聲明的帶參構(gòu)造函數(shù),那么必然調(diào)用了無參構(gòu)造函數(shù)壁顶,問題來了,如果你滿足了下面兩個條件:

  1. 為自己的fragment添加了帶有參數(shù)的構(gòu)造器
  2. 沒有額外聲明一個無參的構(gòu)造函數(shù)溜歪,或者聲明了若专,但是是private的

那么就悲催了,因為你無意間覆蓋了無參構(gòu)造函數(shù)蝴猪,是的调衰,這樣就會報上面那個異常,通過檢查代碼自阱,確實犯了這個問題嚎莉,莫名其妙的聲明了一個private類型的fragmeng空構(gòu)造器,那么問題也就不可避免了沛豌,之所以說這個問題難遇到趋箩,是因為我們平常確實很少去為fragment聲明其他的構(gòu)造器,但問題出了就要找到原因加派。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末叫确,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子芍锦,更是在濱河造成了極大的恐慌竹勉,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件娄琉,死亡現(xiàn)場離奇詭異次乓,居然都是意外死亡吓歇,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門票腰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來城看,“玉大人,你說我怎么就攤上這事丧慈∥雒” “怎么了?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵逃默,是天一觀的道長鹃愤。 經(jīng)常有香客問我,道長完域,這世上最難降的妖魔是什么软吐? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮吟税,結(jié)果婚禮上凹耙,老公的妹妹穿的比我還像新娘。我一直安慰自己肠仪,他們只是感情好肖抱,可當(dāng)我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著异旧,像睡著了一般意述。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上吮蛹,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天荤崇,我揣著相機與錄音,去河邊找鬼潮针。 笑死术荤,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的每篷。 我是一名探鬼主播瓣戚,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼雳攘!你這毒婦竟也來了带兜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤吨灭,失蹤者是張志新(化名)和其女友劉穎刚照,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體喧兄,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡无畔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年啊楚,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浑彰。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡恭理,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出郭变,到底是詐尸還是另有隱情颜价,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布诉濒,位于F島的核電站周伦,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏未荒。R本人自食惡果不足惜专挪,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望片排。 院中可真熱鬧寨腔,春花似錦、人聲如沸率寡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽冶共。三九已至靖避,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間比默,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工盆犁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留命咐,地道東北人。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓谐岁,卻偏偏與公主長得像醋奠,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子伊佃,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,612評論 2 350

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