0

나는 기본 clicker 게임을 제작 중입니다. femuler가 아닌 사람의 경우 : (Evertime 버튼을 클릭하면 textView 값에 1이 추가됩니다) 물론 0에서 시작합니다. 이것은 내가 가지고 있지만 오류가 거기 무엇 인이 캐스트가 성공하지 못할 것이라고 말했습니다 (내 꿈을 분쇄) "로"Android Studio 3의 OnClick 및 TextView

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

답변

0

오, 그래. textView.textCharSequence이므로 Int으로 전송할 수 없으므로 작동하지 않습니다. CharSequenceString처럼 처리 할 수 ​​없기 때문에 더욱 까다로워집니다. 당신이해야 할 일은 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() 
+0

오 ... 자바와 다르지만 여전히 좋습니다. 감사합니다. @ user2759839 – Chuckinator

0

int (int)에 대한 텍스트 (CharSequence) user2759839

그러나 단순한 구문 오류를 넘어서는 경우에는 textView에서 읽지 않아도됩니다. 일반적으로 뷰 객체는 상태를 유지하지 않아야합니다. 그들은 사용자 입력 또는 디스플레이 정보를 캡처해야합니다.

클릭 수 상태를 유지하기 위해 개인 변수를 만들고 업데이트 한 다음 TextView를 사용하여 값을 표시하십시오.

이렇게됩니다.

private var clickCount = 0 

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

이렇게하면 toInt()가 실패 할 경우 예외가 발생할 염려가 없습니다.