我目前正在尝试在我的应用程序中实现预测,但遇到了一个错误。
这似乎是 Android 14 或三星操作系统的错误。该错误的情况似乎是:
如果用户缓慢启动后退手势,则预测后退会被触发,但随后会卡住。不会触发任何取消事件(不调用
handleOnBackCancelled()
)。
我能够在具有最新更新(Android 14)的 S24 上重现此错误,但无法在具有最新更新(也是 Android 14)的 Pixel 7 上重现此错误。我知道 Pixel 系列获得了 2 个特定的操作系统补丁,因此可能只是 Pixel 7 获得了修复,而三星操作系统并未引入该修复。不过我并不排除这是三星特有的错误的可能性。
如果有人知道原因或解决方法,请告诉我。
此错误似乎是 Android 14 错误或三星操作系统错误。我没有非 Pixel 和非 Samsung Android 14 设备可供确认。
我能够想到一个解决方法,因为除了更新操作系统之外不太可能有解决该错误的方法。
解决方法是删除 EditText 具有焦点但不显示键盘的状态。据我所知,消除这种状态并不会降低用户体验。
我这样做的方法是为键盘可见性设置一个侦听器,如下所示:
class MyDialogFragment : DialogFragment() {
...
private val isKeyboardHiddenState = MutableStateFlow(true)
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
ViewCompat.setOnApplyWindowInsetsListener(binding.root) { v, windowInsets ->
val imeInset = windowInsets.getInsets(WindowInsetsCompat.Type.ime())
isKeyboardHiddenState.value = imeInset.bottom == 0
WindowInsetsCompat.CONSUMED
}
viewLifecycleOwner.lifecycleScope.launch {
isKeyboardHiddenState.collect { isKeyboardHidden ->
if (isKeyboardHidden && myEditText.isFocused) {
myEditText.clearFocus()
}
}
}
}
}