vide
03/21/2023, 8:53 PMjava.lang.IllegalStateException: Event can't be processed because we do not have an active focus target.
at androidx.compose.ui.focus.FocusOwnerImpl.dispatchKeyEvent-ZmokQxo(FocusOwnerImpl.kt:171)
EDIT: I have a hypothesis on why this is happening. I think it's a compose bug. Will write explanation in š§µ
EDIT 2: Debugged the root cause and created a minimal repro and recorded a demo of the crashvide
03/21/2023, 9:01 PMvide
03/21/2023, 9:02 PMvide
03/21/2023, 9:21 PMInactive
while (View).isFocused
is true.vide
03/21/2023, 9:37 PMrootFocusNode.focusStateImpl
is ActiveParent but all children are Inactivevide
03/21/2023, 10:52 PMvide
03/21/2023, 11:09 PMclass MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Demo()
}
}
}
@Composable
fun ClickableBox(
modifier: Modifier = Modifier,
isEnabled: Boolean,
onClick: () -> Unit,
content: @Composable BoxScope.() -> Unit
) {
val interactionSource = remember { MutableInteractionSource() }
val isFocused = interactionSource.collectIsFocusedAsState()
Box(modifier = modifier
.background(if (isFocused.value) Color.Cyan else Color.Magenta)
.clickable(
interactionSource = interactionSource,
indication = LocalIndication.current,
enabled = isEnabled, onClick = onClick
)
) {
content()
}
}
@Composable
fun Demo() {
var outerBoxClickable by remember { mutableStateOf(false) }
var innerBoxClickable by remember { mutableStateOf(true) }
Column(Modifier.background(Color.Black)) {
ClickableBox(
Modifier.size(50.dp),
isEnabled = outerBoxClickable,
onClick = {}
) {
ClickableBox(
Modifier.size(25.dp).align(Alignment.Center),
isEnabled = innerBoxClickable,
onClick = { outerBoxClickable = true }
) {}
}
ClickableBox(Modifier.size(50.dp), isEnabled = true, onClick = {}) {}
}
}
vide
03/21/2023, 11:10 PMvide
03/21/2023, 11:13 PMvide
03/22/2023, 12:12 AM