在我的应用程序中我有两个编辑框,用户在其中键入电子邮件和密码。这些值会发送到网址,如果返回值为 成功 ,我将转移到新活动,否则返回值为 电子邮件和密码不匹配! 我想显示emailand pwd不匹配的提示框。
为此,在使用sax解析器从网络获取xml文件后,我正在解析,如果返回值为"Email And Password Not Match!"
,我将其存储为常量名称ERROR_VALUE
。
我已经将值存储在String常量中,如下所示
public static String ERROR_CONST = "Email And Password Not Match!";
现在我正在比较这些值并显示一个警告框,
if (ERROR_CONST.contentEquals(ERROR_VALUE))
{
alertbox();
}
在此之后我使用else部分移动到新活动,我的应用程序仅在此部分崩溃
else if(ERROR_VALUE == null)
{
Intent myIntent = new Intent(getBaseContext(), Add.class);
startActivityForResult(myIntent, 0);
finish();
}
}
如何在我的应用中成功使用其他条件,请帮助我的朋友
答案 0 :(得分:2)
当比较2个字符串时,使用
总是一个好主意s1.compareToIgnoreCase(s2);
阅读你的帖子我建议你使用枚举或常量
public static final ERROR_CODE_INVALIDE_LOGGIN = 1;
比较那些字符串。
比较字符串是乏味的(必须要小心,你比较字符而不是引用等)。比较2 int很容易,花费的时间更少
我在javaDoc中快速检查了
contentEquals将String与StringBuffer
进行比较as
http://download.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#compareTo(java.lang.String)
比较实际的字符串字母
其他编辑(抱歉)
如果您的代码是
if (ERROR_CONST.contentEquals(ERROR_VALUE))
{
alertbox();
}
else if(ERROR_VALUE == null)
{
Intent myIntent = new Intent(getBaseContext(), Add.class);
startActivityForResult(myIntent, 0);
finish();
}
然后当ERROR_VALUE为== null时出现问题。
你在contentequals中传递null,我猜测Java会尝试将null转换为StringBuffer并崩溃。
你想做什么
if(ERROR_VALUE == null)
{
Intent myIntent = new Intent(getBaseContext(), Add.class);
startActivityForResult(myIntent, 0);
finish();
}else if (ERROR_CONST. equalsIgnoreCase(ERROR_VALUE))
{
alertbox();
}
这样你就可以避免任何空指针异常,你的比较就可以了。