kotlin recycler_view must not be null

報錯

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還沒有創建嗎?亦或是創建中?

驗證

爲了驗證這個想法,分別在onActivityCreatedonViewCreated中做了打印和修改背景顏色的操作

    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可能並沒有返回,所以就找不到了,所以我們可以把初始化操作放在onActivityCreatedonViewCreated

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        initView()
        initData()
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章