1. Fragment 使用時要有一個無參構造函數(shù)
如果沒有無參構造函數(shù),而是像按照普通類來使用,只創(chuàng)建有參構造函數(shù),則會出現(xiàn) android.support.v4.app.Fragment$InstantiationException 錯誤。
原因:Fragment 和 Activity 都是生命周期的組件,不能看做一般的類。如果非要使用有參構造函數(shù),可能在使用的時候第一次傳參沒有問題,但是大概率在后面使用的時候出現(xiàn)問題。因為Fragment的什么周期依附在Activity中,如果Activity為null,那么Fragment肯定不能夠正常使用了,比如手機屏幕的橫豎屏切換導致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.
*