0

我正在制作一个基本的点击游戏。对于那些不是femuler的人:(每次单击按钮时,它都会将1添加到textView的值)当然从0开始。这就是我所拥有的,但“as”有一个错误,表示这个演员永远不会成功(粉碎我的梦想)

fun click(v: View){
      textView.text as Int + 1
}
4

2 回答 2

0

编译器告诉您不可能将文本 (CharSequence) 转换为 user2759839 提到的 Int

但是除了简单的语法错误之外,您根本不必从 textView 中读取。一般来说,对象不应该保持状态。他们应该捕获用户输入或显示信息。

你应该做的是创建一个私有变量来保存点击计数状态,更新它,然后只使用 TextView 来显示值。

所以像这样。

private var clickCount = 0

fun click(v: View) {
      clickCount += 1
      textView.text = "$clickCount"
}

这还有一个额外的好处,即您不必担心 toInt() 失败时可能引发的异常。

于 2017-11-07T21:37:27.110 回答
0

哦耶。它不起作用,因为textView.textis a CharSequence,它永远无法转换为Int。这变得更加棘手,因为您不能将 aCharSequence视为 a String。您需要做的是将 转换textString,解析 中的当前数字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()
于 2017-11-07T01:43:54.223 回答