【发布时间】:2020-06-16 12:05:28
【问题描述】:
我正在做一个注册过程,它分为三个步骤,所以我在所有三个片段和注册活动之间使用共享视图模型。 我想要做的是在我加载下一个片段后,我进行了一些 UI 更新以显示另一个工具栏,正在工作的是替换片段,他成功地加入了更新 UI 方法,但在 UI 上没有进行任何更改
override fun navigateToSignUp() {
setFragment(
R.id.home_frame,
SignUpFragment()
)
showTitleInToolbarBackParam("Register", true)
}
private fun showTitleInToolbarBackParam(title: String, back: Boolean) {
Log.e(TAG, "showTitleInToolbarBackParam: ")
getDataBinding()!!.appbar.toolbar.visibility = VISIBLE
getDataBinding()!!.homeappbar.homeappbar.visibility = GONE
getDataBinding()!!.appbar.titleTextView.text = title
if (back)
getDataBinding()!!.appbar.backImageView.visibility = VISIBLE
else
getDataBinding()!!.appbar.backImageView.visibility = GONE
}
class SignUpFragment : BaseFragment<FragmentSignUpBinding>() {
private lateinit var viewModel: WelcomingViewModel
override fun setViewModel() {
viewModel = activity.run {
ViewModelProviders.of(this!!).get(WelcomingViewModel::class.java)
}
}
override fun init() {
getDataBinding().viewModel = viewModel
}
override fun getLayoutId(): Int {
return R.layout.fragment_sign_up
}
}
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="viewModel"
type="com.itchek.presentation.welcoming.WelcomingViewModel" />
</data>
在绑定 XML 文件中的所有片段时,我使用了相同的视图模型
【问题讨论】:
-
您究竟是如何使用共享视图模型的?展示如何实例化和使用它的示例。
-
我更新了我的问题,我的问题是我可以访问该方法但我无法在 UI 中进行任何修改,我进行了调试并且该方法可以访问,这就是问题,我想也许在片段和活动之间进行回调并使用它,但当我有一个共享视图模型时不需要这样做
-
需要更多信息才能继续处理此问题:
R.layout.fragment_sign_up和WelcomingViewModel内容。为什么?目前尚不清楚您使用的视图模型和布局之间的数据绑定究竟是如何实现的。 -
您找到解决方法了吗?我遇到了同样的问题。如果我将我的 ViewModel 绑定到片段,它会更新,但当 ViewModel 绑定到活动时不会更新。
标签: android android-fragments kotlin viewmodel