我有以下问题。我想查看我的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。
答案 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)
如果它们为空,您应该检查Name
和StrName
。 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();