62

ネット全体で のような例を目にしedittext.getText().toString()ます。null チェックは表示されません。ドキュメントでは、これが決してnullにならないというステートメントは見当たりません。

それでも、観察結果は何を示していますか。これはnullを返しますか?

4

7 に答える 7

71

getText()戻りませんnull。したがって、次の方法では NPE の可能性はありません。getText文字列がない場合は空の文字列を返しますが、これは間違いありませんnull

getText().toString();

nullただし、適切に初期化されていない場合、edittext 自体が

editText.getText().toString();
于 2013-10-25T13:02:33.420 に答える
32

アップデート:

2018 年 1 月 18 日現在、これが可能になっているようです。

古い答え:

いいえ、EditText.getText()決して戻りませんnull。これを確認する 1 つの方法は、次の Android ソース コードを確認することですEditText.getText()

EditText.javaは以下を示します。

public Editable getText() {
    return (Editable) super.getText();
}

からEditText extends TextView、への呼び出しは でsuper.getText()なければなりませんTextView.getText()。次に、TextView.getText()何が返されるかを確認します。

TextView.javaは以下を示します。

public CharSequence getText() {
    return mText;
}

mTextここで、null になる可能性があるかどうかを知る必要があります。

TextView.java ソースをさらに掘り下げると、コンストラクターmTextで空の文字列として初期化されていることがわかります。TextView

public TextView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    mText = "";
    …
}

EditTextコンストラクターがコンストラクターを呼び出すことを確認したら、次のようにしますTextView

public EditText(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}

EditText.getText()が を返すことはないと安全に結論付けることができます。これは、が構築さnullれるとすぐに空の文字列の値が与えられるためです。EditTextmText

ただし、StinePike が指摘したように、EditText がを呼び出したときにEditText.getText()NPE が発生する可能性があります。nullgetText()

于 2014-01-10T16:20:32.483 に答える
0

あなたedittext.getText().toString()が直接呼び出されたからonCreate()です...これがeditTextの初期値を返す理由です。から関数を作成しonCreate()、イベントリスナーで呼び出すだけです。

onCreate (){
      ….............
     btn = (Button)findViewById(R.id.firstButton);
     btn.setOnClickListener(new View.OnClickListener()
     {
         @Override
         public void onClick(View v)
         {
                getValue ()
         }
     });

}

public void getValue () {
    String editTextValue= edittext.getText().toString();
    ......
}

onClickListennerまたは、で直接呼び出すこともできますonCreate()。このような:

onCreate (){
      ….............
     btn = (Button)findViewById(R.id.firstButton);
     btn.setOnClickListener(new View.OnClickListener()
     {
         @Override
         public void onClick(View v)
         {
                String editTextValue= edittext.getText().toString();
                ..... 
         }
     });

}

お役に立てば幸いです!

于 2019-12-27T04:17:51.933 に答える
-8

このようにしてみてください

String edittext = edittext.getText().toString();
if(edittext.length==0){ Log.d("null","the valueis null")};
于 2013-10-25T12:57:32.573 に答える