[英]EditText.getText().toString() crashes on button click
我有以下問題。 我想檢查我的EditText
是否包含在Button
單擊時的值/字符串。 開始了:
private EditText Name;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
Name = (EditText)findViewById(R.id.RegisterName);
}
public void RegisterClick(View v)
{
String StrName = Name.getText().toString();
if(StrName != "")
Toast.makeText(null, "Got My String.", Toast.LENGTH_LONG).show();
}
我也將其放入layout.xml中 ,而不是整個代碼中
<Button
android:onClick="RegisterClick" />
因此,現在,當我嘗試進行調試時,在通過序列后,調試器將關閉,該序列要從EditText
設置StrName。
它在哪里崩潰?
我認為這崩潰了:
Toast.makeText(null, "Got My String.", Toast.LENGTH_LONG).show();
您不能將null
上下文傳遞給makeText。 如果你是在一個活動傳遞this
否則(如果你是在一個片段)傳遞getActivity()
另外,在Java中,切勿對字符串使用!=
或==
,但始終使用s1.equals(s2)
(在執行null檢查之前)
您必須使用以下代碼比較字符串
1。
if(StrName.Matches(""))
Toast.makeText(getApplicationContext(), "Got My String.", Toast.LENGTH_LONG).show();
2。
if(StrName.compareToIgnoreCase(string))
Toast.makeText(getApplicationContext(), "Got My String.", Toast.LENGTH_LONG).show();
您應該使用:
if(StrName != null && StrName.length() > 0)
否則可能會引發NullPointerException
您需要首先檢查編輯文本是否包含null。
if(Name.getText() == null || Name.getText().toString().equals(""))
Toast.makeText(context, "Got My String.", Toast.LENGTH_LONG).show();
嘗試這個,
if(!StrName.equals("") && StrName.length() > 0){
Toast.makeText(getApplicationContext(), "Got My String.", Toast.LENGTH_LONG).show();
}
您應該檢查Name
和StrName
是否為空。 MakeText需要Context
,因此也不能為null
。
額外的
if(StrName != "")
沒有按照您的想法去做,所以您應該使用
if(StrName.equals(""))
但這當然不會導致崩潰,只是行為錯誤。
要比較String,請使用equals()方法,而不要在Toast中使用null傳遞cotext:
if(StrName.equals(""))
Toast.makeText(getApplicationContext(), "Got My String.", Toast.LENGTH_LONG).show();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.