Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java EditText.getText().toString()在单击按钮时崩溃_Java_Android_String_Android Edittext - Fatal编程技术网

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

Java EditText.getText().toString()在单击按钮时崩溃,java,android,string,android-edittext,Java,Android,String,Android Edittext,我有以下问题。我想检查我的编辑文本是否包含按钮上的值/字符串单击。我们开始: private EditText Name; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_register); Name = (EditText)findViewById(R

我有以下问题。我想检查我的
编辑文本
是否包含
按钮上的值/字符串
单击。我们开始:

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)
(在执行空检查之前)

您应该使用:

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

您应该检查
Name
StrName
是否为空。MakeText需要一个
上下文
,因此它也可能不是
null

额外的

if(StrName != "")
不是做你想做的,所以你应该使用

if(StrName.equals(""))

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

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

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

您必须使用下面的代码来比较字符串

一,

二,


它与什么相撞?请给我Stacktrace。此外,不要与
==
/
进行字符串比较=
,使用
.equals()
——但请记住
字符串也有
.isEmpty()
。这里的答案太多了,但有趣的是,他们中的许多人都将null作为Toast:D的上下文传递。。。。评估你自己的答案。
if(StrName.Matches(""))
 Toast.makeText(getApplicationContext(), "Got My String.", Toast.LENGTH_LONG).show();
if(StrName.compareToIgnoreCase(string))
 Toast.makeText(getApplicationContext(), "Got My String.", Toast.LENGTH_LONG).show();