2013-06-28 127 views
0

我遇到以下問題。我想檢查我的EditText是否包含Button點擊的值/字符串。在這裏,我們去:EditText.getText()。toString()在按鈕上崩潰單擊

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。

+4

它與什麼崩潰?請Stacktrace。更重要的是,不要使用'=='/'!='進行字符串比較,使用'.equals()' - 但記住'String'也有'.isEmpty()'。 – fge

回答

7

它在哪裏崩潰?

我認爲,在這裏崩潰:

Toast.makeText(null, "Got My String.", Toast.LENGTH_LONG).show(); 

你不能傳遞一個null上下文makeText。 如果您是在活動中傳遞this否則(如果你是在一個片段)傳遞一個getActivity()

而且,在Java中,不要使用!===用繩子卻始終s1.equals(s2)(和之前做一個空檢查)

0

你應該使用:

if(StrName != null && StrName.length() > 0) 

,否則可能會拋出NullPointerException

0

您需要檢查如果編輯文本包含null第一..

if(Name.getText() == null || Name.getText().toString().equals("")) 
    Toast.makeText(context, "Got My String.", Toast.LENGTH_LONG).show(); 
0

試試這個,

if(!StrName.equals("") && StrName.length() > 0){ 
    Toast.makeText(getApplicationContext(), "Got My String.", Toast.LENGTH_LONG).show(); 
    } 
0

你應該檢查NameStrName如果他們是空的。 MakeText需要Context,因此它可能不是null

Additionaly

if(StrName != "") 

不是做你的想法,所以你應該使用

if(StrName.equals("")) 

但當然,這不會導致系統崩潰,只是錯誤的行爲。

0

比較字符串使用equals()方法和,而不是在你的吐司空通cotext: -

if(StrName.equals("")) 
    Toast.makeText(getApplicationContext(), "Got My String.", Toast.LENGTH_LONG).show(); 
+1

這裏有太多的答案,但有趣的是,你們中的許多人都將Toast:D作爲上下文傳遞null ....評估自己的答案。 –

+0

謝謝@PankajKumar :) –

1

你必須使用下面的代碼來比較字符串

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();