puzhibing
2026-08-21 5fa94b3718b4a78a4fcea4c97652b0ef20b7de3a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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>
    }
 
}