JD7*_*D74 4 android kotlin android-jetpack-compose android-jetpack-compose-material3
将构建 gradle 更新为compose_version 1.4.2
“androidx.compose.material3:material3:1.0.1”后。我收到以下错误。
FocusRequester 未初始化。以下是一些可能的修复方法:
- 记住 FocusRequester:
val focusRequester = remember { FocusRequester() }
- 您是否忘记添加一个
Modifier.focusRequester()
?- 您是否试图在构图过程中要求焦点?应针对某些事件发出焦点请求。例如
Modifier.clickable { focusRequester.requestFocus() }
此代码在更新之前有效。
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun EditLocationsScreen(
navController: NavHostController,
casinoViewModel: CasinoViewModel
) {
Scaffold(
topBar = { LocationTopBar(navController = navController)} )
{ paddingValues ->
Spacer(modifier = Modifier.height(10.dp))
Column(
modifier = Modifier
.fillMaxSize()
.padding(paddingValues)
) {
var expanded by remember { mutableStateOf(false) }
val casinoNames by casinoViewModel.casinoNames.collectAsState(emptyList())
var name by remember { mutableStateOf("") }
val focusRequester = remember { FocusRequester() }
Row(
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 10.dp),
horizontalArrangement = Arrangement.SpaceBetween
) {
Text(
text = "Name",
fontWeight = FontWeight.Bold,
modifier = Modifier
.padding(10.dp)
.align(Alignment.CenterVertically)
)
ExposedDropdownMenuBox(
expanded = expanded,
onExpandedChange = { expanded = !expanded },
modifier = Modifier
.weight(1f)
.padding(horizontal = 10.dp)
) {
OutlinedTextField(
label = { Text(text = "Enter Location") },
value = name,
onValueChange = { name = it },
modifier = Modifier
.padding(10.dp)
.align(Alignment.CenterVertically)
.focusRequester(focusRequester)
)
ExposedDropdownMenu(
expanded = expanded,
onDismissRequest = { expanded = false }
) {
casinoNames.forEach { casino ->
DropdownMenuItem(
onClick = {
expanded = false
name = casino.name
},
text = { Text(text = casino.name) }
)
}
}
}
}
Row(
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 10.dp),
) {
Button(
onClick = {
expanded = true
casinoViewModel.insertCasino(name, casinoNames)
name = ""
},
modifier = Modifier
.padding(10.dp)
.weight(1f)
) {
Text(text = "Add new Casino")
}
Button(
onClick = {
expanded = true
casinoViewModel.removeCasino(name, casinoNames)
name = ""
},
modifier = Modifier
.padding(10.dp)
.weight(1f)
) {
Text(text = "Delete Casino")
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我添加了focusRequester
和 修饰符,但仍然出现相同的错误。还需要什么?当我点击添加按钮时它崩溃了。
Phi*_*hov 17
在 M3 中,使用时需要传递Modifier.menuAnchor()
到文本字段ExposedDropdownMenuBox
。来自文档:
应向
TextField
内部内容传递修饰符ExposedDropdownMenuBoxScope.menuAnchor
以获得正确的菜单行为。
ExposedDropdownMenuBox(
expanded = expanded,
onExpandedChange = { expanded = !expanded },
) {
OutlinedTextField(
value = name,
onValueChange = { name = it },
modifier = Modifier
.menuAnchor()
)
ExposedDropdownMenu(
//...
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1211 次 |
最近记录: |