package com.xw.common.base
|
|
|
import android.content.Intent
|
import android.os.Bundle
|
import android.view.LayoutInflater
|
import android.view.View
|
import android.view.ViewGroup
|
import androidx.databinding.ViewDataBinding
|
import com.xw.common.utils.BindUtils.enableBindingLogging
|
import java.lang.reflect.ParameterizedType
|
|
abstract class BaseFragmentNoVM<V : ViewDataBinding> : BaseLazyloadFragment() {
|
|
var TAG = "zmc-${this.javaClass.simpleName}"
|
|
lateinit var binding: V
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
super.onCreate(savedInstanceState)
|
initDataBinding()
|
}
|
|
/**
|
* 创建dataBingding,并自动设置布局
|
*/
|
private fun initDataBinding() {
|
val dbClass = genericTypeBinding()
|
val method = dbClass.getMethod("inflate", LayoutInflater::class.java)
|
binding = method.invoke(null, layoutInflater) as V
|
binding.enableBindingLogging()
|
}
|
|
/**
|
* 跳转页面
|
*
|
* @param clz 所跳转的目的Activity类
|
* @param bundle 跳转所携带的信息
|
*/
|
open fun startActivity(clz: Class<*>?, bundle: Bundle? = null) {
|
val intent = Intent(activity, clz)
|
bundle?.let {
|
intent.putExtras(it)
|
}
|
startActivity(intent)
|
}
|
|
override fun getContentView(inflater: LayoutInflater, container: ViewGroup?): View {
|
return binding.root
|
}
|
|
fun genericTypeBinding(): Class<V> {
|
return (javaClass.genericSuperclass as ParameterizedType).actualTypeArguments[0] as Class<V>
|
}
|
|
}
|