web-dev-qa-db-fra.com

Comment définir le texte d'un EditText sur un Int?

Pour tenter de définir une variable EditText sur une valeur Int, j'ai essayé différentes méthodes pour convertir la variable Int en une valeur que la variable EditText acceptera, mais toutes échouent:

   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
    }

Comment définir la EditText sur une valeur Int?

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

Cela devrait fonctionner pour cela.

16
Ankit Kumar

Essayez le code donné cela fonctionnera. Ce que je fais ici, je convertis d'abord inputText en String, puis Int. Après avoir multiplié par 2, j'attribue une valeur pour outputText en convertissant en chaîne.

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
Rajesh Dalsaniya

Il y a quelques choses qui se passent ici, et pour les comprendre, examinons les différentes méthodes getText et setText que EditText a:

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

Donc, ce que Kotlin fait ici pour vous permettre d’utiliser la syntaxe de la propriété, c’est qu’il crée une propriété text. Le getter utilisé pour la propriété est évident, car il n'y en a qu'un. Le paramètre défini pour la propriété est est supposé être celui qui prend un paramètre CharSequence (cela aurait du sens, Editable rallonge CharSequence), mais essayer en réalité de lui affecter autre chose que Editable ne fonctionnera pas. Voir ce numéro .


Pour accéder au problème, vous pouvez lire la valeur dans votre EditText et la convertir en un String comme ceci:

val input = inputText.text.toString()

Ensuite, vous pouvez utiliser la fonction toInt() de la bibliothèque standard pour la convertir en Int (sachez que cela lève une exception si la String ne peut pas être analysée):

val doubled = input.toInt() * 2

Enfin, vous pouvez définir la valeur de la variable EditText en appelant le paramètre setText dans le style Java traditionnel, en transmettant une variable String:

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

Un peu le bordel à cause de la conversion dans les deux sens entre String et Int, plus les bizarreries de la façon dont la propriété text est générée ici, mais c'est le moyen de le faire. Si cela vous gêne, vous pouvez toujours masquer une partie de ce mécanisme derrière les propriétés des extensions.

2
zsmb13
var num: Int = 5 

convertir en chaîne serait

num.toString()
0
Hirako Shinji