ネット全体で のような例を目にしedittext.getText().toString()
ます。null チェックは表示されません。ドキュメントでは、これが決してnullにならないというステートメントは見当たりません。
それでも、観察結果は何を示していますか。これはnullを返しますか?
ネット全体で のような例を目にしedittext.getText().toString()
ます。null チェックは表示されません。ドキュメントでは、これが決してnullにならないというステートメントは見当たりません。
それでも、観察結果は何を示していますか。これはnullを返しますか?
getText()
戻りませんnull
。したがって、次の方法では NPE の可能性はありません。getText
文字列がない場合は空の文字列を返しますが、これは間違いありませんnull
getText().toString();
null
ただし、適切に初期化されていない場合、edittext 自体が
editText.getText().toString();
アップデート:
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
れるとすぐに空の文字列の値が与えられるためです。EditText
mText
ただし、StinePike が指摘したように、EditText がを呼び出したときにEditText.getText()
NPE が発生する可能性があります。null
getText()
あなた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();
.....
}
});
}
お役に立てば幸いです!
このようにしてみてください
String edittext = edittext.getText().toString();
if(edittext.length==0){ Log.d("null","the valueis null")};