直接上主要代码可直接使用:
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 }
}