我有一个B2B应用程序,该应用程序在许多特定于行业的设备上运行,使用Android 6,7,8,10 ...
有一个具有Android 8.1的设备,它在实现的TextFields上存在问题
TextField(
modifier = Modifier.fillMaxWidth().weight(1f),
value = vm.name,
singleLine = true,
onValueChange = {
vm.name = it
}
)
TextField(
modifier = Modifier.fillMaxWidth().weight(1f),
value = vm.duration.toString(),
singleLine = true,
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),
onValueChange = {
vm.duration = try { it.toInt() } catch (e: Exception) { 0 }
}
)
在每个设备上都可以工作,但在这里持续的文字菲尔德,
在按下键盘上的数字时,什么也不会发生,并且永远不会触发valuechange。
最奇怪的是,还有更多类似名称的文本文字,其中一些是
我也无法写数字,我可以。
对于所有10个以上的文本字段,实现都是这样的。有些仅是数值的,而有些是全文。 我永远无法在数字中写入任何数字,有时我什至不能写上文字。 该特定的Android 8.1设备。 (在同一制造商的更多设备上尝试使用相同的Android构建)
任何建议?
检查查看是否在logcat中看到登录。
TextField(
modifier = Modifier.fillMaxWidth().weight(1f),
value = vm.duration.toString(),
singleLine = true,
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),
onValueChange = {
Log.d("TAG", it)
vm.duration = if (it.isNumber()) it.toInt() else 0
}
)
fun String.isNumber(): Boolean {
return this.matches("^\\d+$".toRegex())
}