Как мне установить текст EditText в Int?

В попытке установить для 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
    }

Как я могу установить для EditText значение Int?

Ответы

Ответ 1

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

Это должно сработать для этого.

Ответ 2

Попробуйте дать код, он будет работать. Что я здесь делаю, я сначала конвертирую 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)

    }

Ответ 3

Здесь есть пара вещей, и чтобы понять их, давайте взглянем на различные getText и setText которые имеет EditText:

Editable getText()
void setText(CharSequence text)
void setText(@StringRes int resid)
// many other setText methods with buffer options

Так что Kotlin делает здесь, чтобы позволить вам использовать синтаксис свойств, заключается в том, что он создает свойство text. Геттер, используемый для свойства, очевиден, так как есть только один. Предполагается, что установщиком для свойства является тот, который принимает параметр CharSequence (это имеет смысл, Editable расширяет CharSequence), но на самом деле пытаться назначить что-либо, кроме Editable не будет работать. См. Эту проблему.


Чтобы перейти к проблеме, вы можете прочитать значение в своем EditText и преобразовать его в String следующим образом:

val input = inputText.text.toString()

Затем вы можете использовать toInt() из стандартной библиотеки, чтобы преобразовать ее в Int (помните, что это вызовет исключение, если String не может быть проанализирована):

val doubled = input.toInt() * 2

И, наконец, вы можете установить значение EditText, вызвав setText setter в традиционном стиле Java, передав в String:

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

Немного беспорядок из-за двухстороннего преобразования между String и Int, плюс странности того, как здесь генерируется text свойство, но это способ сделать это. Если вы обеспокоены тем, как это выглядит, вы всегда можете скрыть некоторые из этих механизмов за свойствами расширения.

Ответ 4

var num: Int = 5 

преобразовать в строку будет

num.toString()