我正在制作一个基本的点击游戏。对于那些不是femuler的人:(每次单击按钮时,它都会将1添加到textView的值)当然从0开始。这就是我所拥有的,但“as”有一个错误,表示这个演员永远不会成功(粉碎我的梦想)
fun click(v: View){
textView.text as Int + 1
}
我正在制作一个基本的点击游戏。对于那些不是femuler的人:(每次单击按钮时,它都会将1添加到textView的值)当然从0开始。这就是我所拥有的,但“as”有一个错误,表示这个演员永远不会成功(粉碎我的梦想)
fun click(v: View){
textView.text as Int + 1
}
编译器告诉您不可能将文本 (CharSequence) 转换为 user2759839 提到的 Int
但是除了简单的语法错误之外,您根本不必从 textView 中读取。一般来说,对象不应该保持状态。他们应该捕获用户输入或显示信息。
你应该做的是创建一个私有变量来保存点击计数状态,更新它,然后只使用 TextView 来显示值。
所以像这样。
private var clickCount = 0
fun click(v: View) {
clickCount += 1
textView.text = "$clickCount"
}
这还有一个额外的好处,即您不必担心 toInt() 失败时可能引发的异常。
哦耶。它不起作用,因为textView.text
is a CharSequence
,它永远无法转换为Int
。这变得更加棘手,因为您不能将 aCharSequence
视为 a String
。您需要做的是将 转换text
为String
,解析 中的当前数字textView
,将其转换为 Int ,然后将其重新添加回textView
对象。
像这样的东西:
fun click(v: View){
val currentText = textView.text.toString()
//Make sure that this will always be a number or you'll get an exception!
val currentNumber = currentText.toInt()
textView.text = currentNumber.plus(1).toString()
}
您也可以在一行中完成所有操作,但上面的内容要干净得多:
textView.text = textView.text.toString().toInt().plus(1).toString()