我目前正在使用 Jetpack compose 在 Android(Kotlin)上试验 Per App Language。我有一个抽屉,可以在其中调用更改语言的选择(来自 https://github.com/android/user-interface-samples/blob/main/PerAppLanguages/compose_app/app/src/main/java/com 的 LocaleDropDownMenu /example/perapplanguages/MainActivity.kt)。我遵循了所有需要的东西并且它起作用了,屏幕(活动)将重新启动并且文本将改变。但是,我注意到一个错误,每当更改语言时,我都会看到日志消息“D/Compose Focus:Owner FocusChanged(false)”。如果在那之后,我尝试按“后退”按钮退出应用程序,我将收到“无响应”消息。我可以选择等待,然后如果我尝试按回,它会响应并关闭。如果我在更改语言后做其他事情,比如在主屏幕上查看/滚动/点击一会儿,然后点击返回按钮退出,它会毫无问题地关闭
我试图使用 FocusRequester,但我认为我用错了。我应该使用副作用吗?
主屏幕
@Composable
fun HomeScreen(modifier: Modifier = Modifier, viewModel: MainViewModel) {
val focusRequester = remember { FocusRequester() }
Box(
modifier = Modifier
.focusRequester(focusRequester)
.onFocusChanged { focusState ->
if (!focusState.isFocused)
focusRequester.requestFocus()
}
.fillMaxSize(),
contentAlignment = Alignment.Center) {
Column {
....
}
}
}
Logcat 结果:
ActivityManager system_server ANR in ...
Reason: Input dispatching timed out (Application does not have a focused window) ...
Frozen: false
重启后有没有办法强制聚焦?或者有什么方法可以避免应用程序崩溃?