web-dev-qa-db-ja.com

EditTextのテキストをIntに設定するにはどうすればよいですか?

EditTextInt値に設定しようとして、IntEditTextが受け入れる値に変換するさまざまな方法を試しました。 、しかしすべて失敗する:

   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
    }

EditTextInt値に設定するにはどうすればよいですか?

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

これでうまくいくはずです。

17
Ankit Kumar

動作する特定のコードを試してください。ここでやっていることは、まず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プロパティを作成します。プロパティに使用されるゲッターは明らかです。1つしかないためです。プロパティのセッターは、想定されるCharSequenceパラメーターを取る(_理にかなっている、EditableCharSequenceを拡張しますが、実際にはEditable以外のものを割り当てようとしても機能しません。 この問題 を参照してください。


当面の問題を解決するには、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プロパティが生成される方法の奇妙さのために、少し混乱しますが、それが方法ですそれ。この見た目が気になる場合は、このメカニズムの一部を拡張プロパティの背後に常に隠すことができます。

2
zsmb13
var num: Int = 5 

文字列に変換するには

num.toString()
0
Hirako Shinji