admin管理员组文章数量:1220063
TextField always get empty when I try to write in it.
My ViewModel
:
class MyVM: ViewModel() {
var name by mutableStateOf("")
fun onNameChange(newString: String) {
name = newString
}
}
In MainActivity
:
val myVM = MyVM()
MyScreen(
modifier = Modifier.fillMaxSize(),
name = myVM.name
) {
myVM.onNameChange(it)
}
MyScreen
:
@Composable
fun MyScreen(
modifier: Modifier,
name: String,
onNameChange: (String) -> Unit,
) {
Box(
modifier = modifier,
contentAlignment = Alignment.Center,
) {
OutlinedTextField(
value = name,
onValueChange = { newText -> onNameChange(newText) },
label = { Text(text = "Name") },
modifier = Modifier
.fillMaxWidth()
.padding(8.dp),
)
}
}
I want user to enter their name and in viewmodel update the name mutable state variable
TextField always get empty when I try to write in it.
My ViewModel
:
class MyVM: ViewModel() {
var name by mutableStateOf("")
fun onNameChange(newString: String) {
name = newString
}
}
In MainActivity
:
val myVM = MyVM()
MyScreen(
modifier = Modifier.fillMaxSize(),
name = myVM.name
) {
myVM.onNameChange(it)
}
MyScreen
:
@Composable
fun MyScreen(
modifier: Modifier,
name: String,
onNameChange: (String) -> Unit,
) {
Box(
modifier = modifier,
contentAlignment = Alignment.Center,
) {
OutlinedTextField(
value = name,
onValueChange = { newText -> onNameChange(newText) },
label = { Text(text = "Name") },
modifier = Modifier
.fillMaxWidth()
.padding(8.dp),
)
}
}
I want user to enter their name and in viewmodel update the name mutable state variable
Share Improve this question edited Feb 7 at 10:30 tyg 15.2k4 gold badges35 silver badges48 bronze badges asked Feb 7 at 10:16 Ajay JaiswarAjay Jaiswar 92 bronze badges New contributor Ajay Jaiswar is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.1 Answer
Reset to default 3Using val myVM = MyVM()
in Compose will create a new view model instance on each recomposition, starting with a new name
property that is empty.
You want the view model instance to survive recompositions. For that you need to use the factory function viewModel()
like this:
val myVM = viewModel<MyVM>()
or
val myVM: MyVM = viewModel()
Take your pick.
本文标签: androidTextField39s onValueChange doesn39t modify view model stateStack Overflow
版权声明:本文标题:android - TextField's onValueChange doesn't modify view model state - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1739334070a2158620.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论