我正在学习android开发。我已经能够成功创建一个登录类,我的应用程序检查我的mysql数据库,看看数据库中是否存在用户的详细信息。如果用户的详细信息存在于数据库中或“不正确”
,则php文件发布“正确”private void checkResult(){
if(getResults().equals("correct")){
//do some stuffs
}
else{
displayDialog(getResults());
}
}
getResults()方法返回String(来自服务器的响应)。但是,字符串比较似乎不起作用,因为当服务器返回“正确”作为响应时,if条件总是为false。我确认通过使用下面的方法,执行false语句,但alertDialog中的msg是“正确的”。请任何人都可以帮忙,似乎无法理解为什么代码行为不端。
public void displayDialog(String msg){
AlertDialog alertDialog = new AlertDialog.Builder(this).create();
alertDialog.setTitle("Authetication Failed!");
alertDialog.setMessage(msg);
alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// do something when the user presses OK (place focus on weight input?)
}
});
alertDialog.setIcon(R.drawable.icon);
alertDialog.show();
}
答案 0 :(得分:5)
我之前遇到过同样的问题。请尝试使用getResults().trim().equals()
答案 1 :(得分:5)
我强烈怀疑该字符串包含“不可见”字符,例如Unicode U + 0000或者换行符。
我建议你通过记录字符串的长度和每个字符的Unicode值来诊断它:
String results = getResults();
for (int i = 0; i < results.length(); i++)
{
// Whatever the relevant log call is
log("Got character: " + (int) results.charAt(i));
}
似乎远更可能是问题,而String.equals
真的被打破了。
答案 2 :(得分:0)
也许响应中包含一些<br
blaa bla html标记。这是我的第一次。记录输出。 Log("RESPONSE", getResults());