2013-06-28 52 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();