在android中比较两个字符串的问题

时间:2011-06-06 14:16:45

标签: android equals

在我的应用程序中我有两个编辑框,用户在其中键入电子邮件和密码。这些值会发送到网址,如果返回值为 成功 ,我将转移到新活动,否则返回值为 电子邮件和密码不匹配! 我想显示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();
}
                }

如何在我的应用中成功使用其他条件,请帮助我的朋友

1 个答案:

答案 0 :(得分:2)

当比较2个字符串时,使用

总是一个好主意
s1.compareToIgnoreCase(s2);

阅读你的帖子我建议你使用枚举或常量

public static final ERROR_CODE_INVALIDE_LOGGIN = 1;

比较那些字符串。

比较字符串是乏味的(必须要小心,你比较字符而不是引用等)。比较2 int很容易,花费的时间更少


我在javaDoc中快速检查了

contentEquals将String与StringBuffer

进行比较

http://download.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#contentEquals(java.lang.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();
    }

这样你就可以避免任何空指针异常,你的比较就可以了。