Closed D-zy closed 3 years ago
具体是如何无效?是获取不到titleBar还是?
在子类activity里 override fun setTitleBar(titleBar: TitleBarView) { titleBar.setTitleMainText(“xx”) 这里不起作用了 }
给我看看你那个子类的完整代码呢 我感觉像是那个layoutId不一致造成的。。。BasisActivity获取的layout和你dataBinding的不是同一个
abstract class FastTitleActivity<VM : ViewModel, DB : ViewDataBinding> : BasisActivity
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
/**
* 是否需要使用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
只是在你基类上稍微扩展了下,
已解决
博主,请问下,使用 数据绑定时, mDatabind = DataBindingUtil.setContentView(this, contentLayout) 加载布局之后,titleBar 无效了