AriesHoo / FastLib

一个Android项目级快速开发框架,节约大部分写常用功能时间以实现更多项目业务功能及体验上的优化。使用说明见wiki

Home Page:https://github.com/AriesHoo/FastLib/wiki

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

项目扩展为mvvm后,titleBar 无效了

D-zy opened this issue · comments

commented

博主,请问下,使用 数据绑定时, mDatabind = DataBindingUtil.setContentView(this, contentLayout) 加载布局之后,titleBar 无效了

具体是如何无效?是获取不到titleBar还是?

commented

在子类activity里 override fun setTitleBar(titleBar: TitleBarView) {
titleBar.setTitleMainText(“xx”) 这里不起作用了
}

给我看看你那个子类的完整代码呢
我感觉像是那个layoutId不一致造成的。。。BasisActivity获取的layout和你dataBinding的不是同一个

commented

abstract class FastTitleActivity<VM : ViewModel, DB : ViewDataBinding> : BasisActivity(), IFastTitleView {
protected lateinit var mDatabind: DB
protected var mFastTitleDelegate: FastTitleDelegate? = null
protected var mTitleBar: TitleBarView? = null

override fun beforeInitView(savedInstanceState: Bundle?) {
    super.beforeInitView(savedInstanceState)
    mFastTitleDelegate = FastTitleDelegate(mContentView, this, this.javaClass)
    mTitleBar = mFastTitleDelegate!!.mTitleBar
}

override fun onCreate(savedInstanceState: Bundle?) {
    userDataBinding(true)
    super.onCreate(savedInstanceState)
}

/**
 * 创建liveData观察者
 */
override fun createObserver() {}

/**
 * 创建DataBinding
 */
override fun initDataBind() {
    mDatabind = DataBindingUtil.setContentView(this, contentLayout)
    mDatabind.lifecycleOwner = this
}

}

以下是base:----------------------------------------------------

abstract class BasisActivity : RxAppCompatActivity(), IBasisView {

/**
 * 是否需要使用DataBinding 供子类BaseVmDbActivity修改,用户请慎动
 */
private var isUserDb = false

lateinit var mViewModel: VM

@JvmField
protected var mContext = Activity()

@JvmField
protected var mContentView: View? = null

@JvmField
protected var mSavedInstanceState: Bundle? = null
protected var mIsViewLoaded = false
protected var mIsFirstShow = true
protected var mIsFirstBack = true
protected var mDelayBack: Long = 2000

@JvmField
protected val TAG = javaClass.simpleName
override fun attachBaseContext(base: Context) {
    super.attachBaseContext(LocaleManagerUtil.setLocal(base))
}

override fun onCreate(savedInstanceState: Bundle?) {
    if (isEventBusEnable) {
        EventBus.getDefault().register(this)
    }
    super.onCreate(savedInstanceState)
    mSavedInstanceState = savedInstanceState
    mContext = this
    beforeSetContentView()
   ### ### ###      ### ### ###      ### ### ### 主要改动在这里:
 mContentView = View.inflate(mContext, contentLayout, null)
    if (!isUserDb) {
        setContentView(mContentView)
    } else {
        initDataBind()
    }

 ### ### ###      ### ### ###      ### ### ### 
    mIsViewLoaded = true
    beforeInitView(savedInstanceState)
    mViewModel = createViewModel()
    initView(savedInstanceState)
    createObserver()
    initListener()
}


/**
 * 创建viewModel
 */
private fun createViewModel(): VM {
    return ViewModelProvider(this).get(getVmClazz(this))
}

open fun initDataBind() {}

}

这都不是我的基类了,所以我也不知道为啥不会执行,要不你给我个最简单的demo

commented

只是在你基类上稍微扩展了下,

commented

已解决