簡體   English   中英

單擊按鈕時EditText.getText()。toString()崩潰

[英]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();
    }

您應該檢查NameStrName是否為空。 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM