如何将EditText的文本设置为Int?

时间:2017-10-03 03:45:54

标签: android string kotlin int

尝试将hero,comic 24-HOUR MAN/EMMANUEL,AA2 35 3-D MAN/CHARLES CHAN,AVF 4 3-D MAN/CHARLES CHAN,AVF 5 3-D MAN/CHARLES CHAN,COC 1 3-D MAN/CHARLES CHAN,H2 251 3-D MAN/CHARLES CHAN,H2 252 3-D MAN/CHARLES CHAN,M/PRM 35 3-D MAN/CHARLES CHAN,M/PRM 36 3-D MAN/CHARLES CHAN,M/PRM 37 设置为hero1,hero2 "LITTLE, ABNER","PRINCESS ZANDA" "LITTLE, ABNER","BLACK PANTHER/T'CHAL" "BLACK PANTHER/T'CHAL","PRINCESS ZANDA" "LITTLE, ABNER","PRINCESS ZANDA" "LITTLE, ABNER","BLACK PANTHER/T'CHAL" "BLACK PANTHER/T'CHAL","PRINCESS ZANDA" "STEELE, SIMON/WOLFGA","FORTUNE, DOMINIC" "STEELE, SIMON/WOLFGA","ERWIN, CLYTEMNESTRA" 值时,我尝试了将EditText转换为Int将接受的值的各种方法,但都失败了:

Int

如何将EditText设置为 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 } 值?

4 个答案:

答案 0 :(得分:17)

 var a: Int = 12
 var s: String = a.toString()

这应该适用于此。

答案 1 :(得分:3)

尝试给定代码它将起作用。我在这里做的是我首先将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)

    }

答案 2 :(得分:2)

这里有几件事情,为了理解它们,我们来看看getText所拥有的各种setTextEditText方法:

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以外的任何内容都不起作用。请参阅this issue

要解决手头的问题,您可以阅读EditText中的值并将其转换为String,如下所示:

val input = inputText.text.toString()

然后,您可以使用标准库中的toInt()函数将其转换为Int(请注意,如果无法解析String,则会抛出异常):

val doubled = input.toInt() * 2

最后,您可以通过调用传统Java样式的EditText setter来设置setText的值,并传入String

inputText.text.setText(doubled.toString())

由于StringInt之间的双向转换,以及此处生成text属性的奇怪方式,有点混乱,但这是做的方法它。如果你对它的外观感到困扰,你总是可以隐藏扩展属性背后的一些机制。

答案 3 :(得分:0)

var num: Int = 5 

要转换为字符串

num.toString()