直接上主要代码可直接使用:
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版权协议,转载请附上原文出处链接和本声明。