kotlin中对ViewBing的封装

直接上主要代码可直接使用:

abstract class BaseViewBingActivity<SV : ViewBinding> : AppCompatActivity() {
/**
 * ViewBinding
 */
protected lateinit var mBindingView: SV
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    val view = initViewBinding()
    setContentView(view)

}
private fun initViewBinding(): View {
    val superclass = javaClass.genericSuperclass
    val aClass = (superclass as ParameterizedType).actualTypeArguments[0] as Class<*>
    try {
        val method: Method = aClass.getDeclaredMethod("inflate", LayoutInflater::class.java)
        mBindingView = method.invoke(null, layoutInflater) as SV
    } catch (e: NoSuchMethodException) {
        e.printStackTrace()
    } catch (e: IllegalAccessException) {
        e.printStackTrace()
    } catch (e: InvocationTargetException) {
        e.printStackTrace()
    }
    return mBindingView.root
}
}

版权声明:本文为qq_42467528原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。