報錯
recycler_view must not be null
解析
找不到recycler_view
?
override fun initView() {
recycler_view.layoutManager = LinearLayoutManager(mContext)
}
就上面這一行很簡單的代碼,居然提示找不到recycler_view
,難道是kotlin-android-extensions
插件的問題?不可能啊,別的地方是可以的啊,唯一的差別就是recycler_view是在fragment
中調用,別的是在activity
調用而已,難道是這個時候view還沒有創建嗎?亦或是創建中?
驗證
爲了驗證這個想法,分別在onActivityCreated
和onViewCreated
中做了打印和修改背景顏色的操作
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
LogUtilKt.i("onActivityCreated--------")
recycler_view.setBackgroundColor(ContextCompat.getColor(mContext,R.color.orange))
recycler_view.layoutManager = LinearLayoutManager(mContext)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
LogUtilKt.i("onViewCreated...")
recycler_view.setBackgroundColor(ContextCompat.getColor(mContext,R.color.orange))
}
結論
運行發現,以上兩個方法都是執行的,結論得出,我們通常把initView
方法寫在onCreateView
方法中,但是這個時候view可能並沒有返回,所以就找不到了,所以我們可以把初始化操作放在onActivityCreated
或onViewCreated
中
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
initView()
initData()
}