wake-up-neo.net

Wie lege ich den Text eines EditText auf einen Int fest?

In einem Versuch, eine EditText auf einen Int-Wert festzulegen, habe ich verschiedene Möglichkeiten zum Konvertieren der Int in einen Wert versucht, den die EditText akzeptiert, aber alle schlagen fehl

   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
    }

Wie kann ich die EditText auf einen Int-Wert setzen?

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

Das sollte dafür funktionieren.

16
Ankit Kumar

Versuchen Sie den angegebenen Code, es wird funktionieren. Was ich hier mache, konvertiere ich inputText zuerst in String und dann in Int. Nachdem ich mit 2 multipliziert habe, weise ich einen Wert für outputText zu, indem ich ihn in string konvertiere.

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

Hier sind ein paar Dinge im Gange, und um sie zu verstehen, werfen wir einen Blick auf die verschiedenen getText- und setText-Methoden, die EditText hat:

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

Das, was Kotlin hier für die Verwendung der Eigenschaftssyntax tut, besteht darin, dass eine text -Eigenschaft erstellt wird. Der Getter für die Immobilie ist offensichtlich, da es nur einen gibt. Der Setter für die Eigenschaft ist soll derjenige sein, der einen CharSequence-Parameter benötigt (es wäre sinnvoll, Editable erweitert CharSequence), aber der Versuch, etwas anderes als eine Editable zuzuweisen, funktioniert nicht. Siehe diese Ausgabe .


Um zu dem vorliegenden Problem zu gelangen, können Sie den Wert in Ihrer EditText lesen und in eine String wie folgt konvertieren:

val input = inputText.text.toString()

Dann können Sie die Funktion toInt() aus der Standardbibliothek verwenden, um sie in eine Int zu konvertieren (beachten Sie, dass dies eine Ausnahme auslöst, wenn die String nicht analysiert werden kann):

val doubled = input.toInt() * 2

Schließlich können Sie den Wert der Variable EditText festlegen, indem Sie den Parameter setText im traditionellen Java-Stil aufrufen und eine String übergeben:

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

Ein bisschen chaotisch wegen der Zwei-Wege-Konvertierung zwischen String und Int sowie den Eigenheiten, wie die text-Eigenschaft hier generiert wird. Dies ist jedoch der Weg. Wenn Sie sich Sorgen machen, wie das aussieht, können Sie immer einen Teil dieses Mechanismus hinter den Erweiterungseigenschaften verbergen.

2
zsmb13
var num: Int = 5 

in string umzuwandeln wäre

num.toString()
0
Hirako Shinji