1. Fragment 使用時(shí)要有一個(gè)無(wú)參構(gòu)造函數(shù)
如果沒(méi)有無(wú)參構(gòu)造函數(shù),而是像按照普通類來(lái)使用,只創(chuàng)建有參構(gòu)造函數(shù),則會(huì)出現(xiàn) android.support.v4.app.Fragment$InstantiationException 錯(cuò)誤。
原因:Fragment 和 Activity 都是生命周期的組件,不能看做一般的類。如果非要使用有參構(gòu)造函數(shù),可能在使用的時(shí)候第一次傳參沒(méi)有問(wèn)題,但是大概率在后面使用的時(shí)候出現(xiàn)問(wèn)題。因?yàn)镕ragment的什么周期依附在Activity中,如果Activity為null,那么Fragment肯定不能夠正常使用了,比如手機(jī)屏幕的橫豎屏切換導(dǎo)致Activity重建了。
至于為什么是這樣的呢?看下Fragment初始化的源碼,有這么一段:
/** * Create a new instance of a Fragment with the given class name. This is
* the same as calling its empty constructor.
*
* @param context The calling context being used to instantiate the fragment.
* This is currently just used to get its ClassLoader.
* @param fname The class name of the fragment to instantiate.
*