如何将Int转换为Kotlin中的字符串
我有以下代码试图将一个Int转换为Kotlin中的字符串(在Android Studio中)没有任何明显的方式工作,但我不知道为什么或如何将Int转换为字符串:
processButton.setOnClickListener { var intNo = inputText.text as Int intNo *= 2 outputText.text = intNo as String // error = "required editable" outputText.text = intNo.toString() // err: type mismatch outputText.text = Int.toString(intNo) // type mismatch reqd editable outputText.text = "What is going on?" // type mismatch reqd editable }
这里有一些事情要做,为了理解它们,我们来看看EditText
具有的各种getText
和setText
方法:
Editable getText() void setText(CharSequence text) void setText(@StringRes int resid) // many other setText methods with buffer options
那么Kotlin在这里做什么让你使用属性语法是它创建一个text
属性。 用于财产的吸气剂是显而易见的,因为只有一个。 该属性的setter 应该是一个接受CharSequence
参数(这是有道理的, Editable
扩展CharSequence
),但实际上试图分配除Editable
以外的任何东西将无法正常工作。 看到这个问题 。
为了解决问题,您可以读取EditText
的值并将其转换为如下所示的String
:
val input = inputText.text.toString()
然后,可以使用标准库中的toInt()
函数将其转换为Int
(请注意,如果无法解析String
,则会引发异常):
val doubled = input.toInt() * 2
最后,您可以通过调用传统Java风格的setText
设置器来设置EditText
的值,并传递一个String
:
inputText.text.setText(doubled.toString())
由于String
和Int
之间的双向转换,加上text
属性在这里产生的奇怪之处,这是一个混乱,但这是做到这一点的方法。 如果你被这个看起来困扰,你总是可以隐藏扩展属性的一些机制。
尝试给定的代码,它将工作。 我在这里做的是我首先将inputText转换为String然后Int。 在我乘以2后,我通过转换为字符串为outputText分配一个值。
processButton.setOnClickListener { var intNo = inputText.text.toString().toInt() intNo *= 2 //println(intNo.toString()) val myString = intNo.toString() // If you using outputText as Editable then use this outputText.text = SpannableStringBuilder(myString) }
var a: Int = 12 var s: String = a.toString()
这应该为此工作。