EditText.getText()。toString()在按钮单击时崩溃

时间:2013-06-28 09:17:49

标签: java android string android-edittext

我有以下问题。我想查看我的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。

7 个答案:

答案 0 :(得分:7)

它在哪里崩溃?

我认为这是崩溃:

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

您无法将null上下文传递给makeText。 如果您在活动中传递this,否则(如果您在片段中)传递getActivity()

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

答案 1 :(得分: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();

答案 2 :(得分:0)

您应该使用:

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

否则可能会抛出NullPointerException

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

试试这个,

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

答案 5 :(得分:0)

如果它们为空,您应该检查NameStrName。 MakeText需要Context,因此它可能不是null

Additionaly

if(StrName != "")

没有按你的想法行事,所以你应该使用

if(StrName.equals(""))

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

答案 6 :(得分:0)

比较String使用equals()方法而不是Toast中的null pass context: -

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