ネット全体で のような例を目にし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れるとすぐに空の文字列の値が与えられるためです。EditTextmText
ただし、StinePike が指摘したように、EditText がを呼び出したときにEditText.getText()NPE が発生する可能性があります。nullgetText()
あなた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")};