遇到一个kotlin的kotlinx找不到资源的问题

2018-05-23  本文已影响76人  o动感超人o

具体报错就是kotlinx.android.synthetic.main.xxx引入的资源在程序打包运行的时候报Unresolved reference:xxx的错误,因为我把xml放到其他的module里了,而本模块的Activity和他用到的xml并不是一个module,直接用kotlinx去使用这个控件就报错了,目前我的解决办法就是先用findViewById,以后kotlin应该会解决这个问题
问题补充:这个问题在Fragment中比较常见,例如当您访问时btn_K,它需要getView().findViewById(R.id.btn_K),如果在Fragment的

    override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        var rootView = inflater?.inflate(R.layout.fragment_card_selector, container, false)
        btn_K.setOnClickListener { Log.d(TAG, "onViewCreated(): hello world"); }

        return rootView
    }

这个方法里调用btn_K资源肯定找不到,因为这个方法还没有返回rootView,解决方法是:

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    btn_K.setOnClickListener { Log.d(TAG, "onViewCreated(): hello world"); }
}

问题详情:
https://stackoverflow.com/questions/34541650/nullpointerexception-when-trying-to-access-views-in-a-kotlin-fragment

该问题的重点是kotlin这种方式的实现机制是:
当您访问时btn_K,它需要getView().findViewById(R.id.btn_K)

上一篇下一篇

猜你喜欢

热点阅读