0

我有以下问题。我想检查我的点击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" />

所以现在,当我尝试调试时,调试器会在我通过我想要设置 StrName 的序列后关闭EditText

4

7 回答 7

7

它在哪里崩溃?

我认为这在这里崩溃了:

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

您不能将null上下文传递给 makeText。如果你在一个活动中,则传递它,this否则(如果你在一个片段中)传递一个getActivity()

此外,在 Java 中,永远不要使用!===与字符串一起使用,但总是s1.equals(s2)(并且在它进行空检查之前)

于 2013-06-28T09:20:09.477 回答
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();
于 2013-06-28T09:32:15.823 回答
0

你应该使用:

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

否则可能会抛出 NullPointerException

于 2013-06-28T09:20:19.613 回答
0

您需要先检查编辑文本是否包含 null ..

if(Name.getText() == null || Name.getText().toString().equals(""))
     Toast.makeText(context, "Got My String.", Toast.LENGTH_LONG).show();
于 2013-06-28T09:20:19.650 回答
0

尝试这个,

  if(!StrName.equals("") && StrName.length() > 0){
    Toast.makeText(getApplicationContext(), "Got My String.", Toast.LENGTH_LONG).show();
    }
于 2013-06-28T09:21:19.143 回答
0

您应该检查它们是否NameStrName空。MakeText 需要一个Context,所以它可能不是null

额外的

if(StrName != "")

没有按照你的想法做,所以你应该使用

if(StrName.equals(""))

但这当然不会导致崩溃,只是错误的行为。

于 2013-06-28T09:23:42.560 回答
0

要比较字符串,请使用 equals() 方法,而不是 Toast 中的 null 传递 cotext:-

 if(StrName.equals(""))
    Toast.makeText(getApplicationContext(), "Got My String.", Toast.LENGTH_LONG).show();
于 2013-06-28T09:23:51.253 回答