今天在 Bugly 上發(fā)現(xiàn)一個(gè)崩潰信息:Java.lang.NoSuchmethodException: could not find Fragment constructor。

Bugly 錯(cuò)誤信息
這問題有點(diǎn)意思,居然找不到
Fragment 的構(gòu)造方法?Ctrl + Shift + F 全局搜索 Unable to instantiate fragment,發(fā)現(xiàn)拋出異常的地方反射無參構(gòu)造方法,獲取 Fragment 實(shí)例。
image.png
再回頭看
Bugly 上堆棧信息,發(fā)現(xiàn)了蛛絲馬跡,在 Fragment 恢復(fù)保存狀態(tài)的時(shí)候崩潰了。原來宿主 Activity 被銷毀后重新恢復(fù),它內(nèi)部的 Fragment 也會(huì)通過反射的方式實(shí)例化。
Bugly 錯(cuò)誤信息
問題這下找到了,同事將
XXXFragment 的無參構(gòu)造方法改成 private 私有,導(dǎo)致反射時(shí)實(shí)例化失敗并拋出異常。將無參構(gòu)造方法改成 public 即可。