如何将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具有的各种getTextsetText方法:

 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()) 

由于StringInt之间的双向转换,加上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() 

这应该为此工作。