这个IF-ELSE声明中有什么进展?

时间:2014-03-23 12:51:27

标签: java android if-statement

我真的被困在这里,它对我没有任何意义。这里发生了什么:我有一个AsyncTask将数据发送到服务器并检索String响应。字符串响应可以是两件事:它可以是一条消息,告诉用户如果输入的凭据是正确的,他/她已登录,或者它可以是" FALSE"用于向用户显示通知toast并将他/她带回主活动以重试登录的字符串。

以下是代码段:

button.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {    
        String cr = "Placeholder";
        Credential cred = new Credential();

        try { cr = cred.execute().get(); } 
        catch (InterruptedException e) { e.printStackTrace(); } 
        catch (ExecutionException e) { e.printStackTrace(); }
        //tv.setText(cr);

        if (cr == "FALSE") {
            Log.d("Checking in false", cr);
            Toast.makeText(Credentials.this, "Cannot log in: wrong username or password", Toast.LENGTH_LONG).show();
            startActivity(new Intent(Credentials.this, MainActivity.class));
        } else if (cr != "FALSE") {
            Log.d("Checking in true", cr);
            Intent intent = new Intent(Credentials.this, ProfileActivity.class);
            intent.putExtra(INTENT_DATA, cr);
            startActivity(intent);
        }
    }
});

通过使用Log.d()静态方法并查看LogCat,如果凭据错误,我确定返回的值确实为FALSE(同样,它不是一个布尔值,只是所有Caps中的String)。有趣的是,执行的代码是"否则如果"我发布的片段的一部分,但它实际上记录了返回的字符串值为FALSE这意味着(至少对我而言)它应该执行第一个"如果& #34;条件(即if (cr == "FALSE") { })。但不,它继续执行"否则如果"一部分。

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

使用equals进行字符串比较。

即:

WRONG:

if (cr == "FALSE") {

正确:

if (cr.equals("FALSE")) {

答案 1 :(得分:0)

使用

if (cr.contentEquals("false") {
    //your code     
} else {
    //your code
}