如何使用viewmodel数据绑定edittext属性android:已启用?
要求: 我有一个用户名和密码。我希望密码edittext仅在用户名edittext中输入有效用户名时启用 布局代码:如何使用viewmodel数据绑定edittext属性android:已启用?,android,android-edittext,android-databinding,android-livedata,Android,Android Edittext,Android Databinding,Android Livedata,要求: 我有一个用户名和密码。我希望密码edittext仅在用户名edittext中输入有效用户名时启用 布局代码: signInFragmentBinding.lifecycleOwner=添加这一行解决了问题。在您的活动中,执行此操作,它将工作: binding.lifecycleOwner = this 为了使绑定作用于LiveData更改,需要提供LifecyclerOwner class MainActivity : AppCompatActivity() { ...
signInFragmentBinding.lifecycleOwner=添加这一行解决了问题。在您的活动中,执行此操作,它将工作:
binding.lifecycleOwner = this
为了使绑定作用于LiveData更改,需要提供LifecyclerOwner
class MainActivity : AppCompatActivity() {
...
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding: ActivityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main)
binding.lifecycleOwner = this
binding.viewModel = viewModel
}
}
不确定isUsernameValid在这里是否可以是私有的,因为您在xml@P.Juni我有能手/二传手,因此它可以是私人的。非常感谢。成功了。你能详细介绍一下lifecycler的所有者吗?我所能说的就是LiveData之所以被称为LiveData,是因为它与观察它的组件的生命周期紧密相连。LifecycleOwner是一个具有Android生命周期的类。自定义组件可以使用这些事件来处理生命周期更改,而无需在活动或片段中实现任何代码。当我们使用数据绑定将LiveData绑定到视图时,绑定需要知道是否可以执行这些LiveData绑定并更新值。为此,他们需要了解该组件的生命周期。在我们的案例中,它是活动视图。这就是为什么我们提供LifecycleOwner,以便数据绑定可以向绑定的LiveData组件发送更新。
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
if (activity != null) {
signInViewModel = ViewModelProviders.of(this).get(SignInViewModel::class.java)
signInFragmentBinding.sharedModel = mainActivityViewModel
signInFragmentBinding.lifecycleOwner = this
signInFragmentBinding.model = signInViewModel
}
}
binding.lifecycleOwner = this
class MainActivity : AppCompatActivity() {
...
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding: ActivityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main)
binding.lifecycleOwner = this
binding.viewModel = viewModel
}
}