You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android登录逻辑异常:添加else后忽略指定邮箱判断分支

问题分析与修复方案

你的问题出在条件判断的逻辑结构上:第二个if和它后面的else是绑定在一起的,而非和第一个if形成完整的分支链。这就导致哪怕第一个if的条件满足(邮箱是ocmt@yahoo.com),程序执行完第一个跳转后,还是会进入第二个if的判断——因为条件不满足,直接触发else里的跳转逻辑,最终你看到的就是默认跳到List3Activity,看起来像是忽略了前面的判断。

修复后的代码

把第二个if改成else if,让三个条件形成互斥的分支结构,这样只会执行其中一个符合条件的逻辑:

if (!task.isSuccessful()) { // there was an error
    if (password.length() < 6) {
        inputPassword.setError(getString(R.string.minimum_password));
    } else {
        Toast.makeText(LoginActivity.this, getString(R.string.auth_failed), Toast.LENGTH_LONG).show();
    }
} else {
    String email = inputEmail.getText().toString(); // 提前取出邮箱字符串,避免重复调用
    if(email.equals("ocmt@yahoo.com") ) {
        Intent i = new Intent(LoginActivity.this, ListActivity.class);
        startActivity(i);
    } else if(email.equals("ocmt1@yahoo.com") ) { // 这里改成else if,形成分支链
        Intent i = new Intent(LoginActivity.this, List2Activity.class);
        startActivity(i);
    } else{
        Intent i = new Intent(LoginActivity.this, List3Activity.class);
        startActivity(i);
    }
}
// 后续闭合代码保持不变
});
}
});
}
public void contasguest(View view) {
    Intent intent = new Intent(LoginActivity.this, ImageListshopActivity.class);
    startActivity(intent);
}

额外优化建议

  • 提前把邮箱字符串存到变量里,避免多次调用inputEmail.getText().toString(),让代码更简洁高效。
  • 如果后续要添加更多指定邮箱的跳转逻辑,建议用HashMap做映射,不用写一堆else if,扩展性更强:
    HashMap<String, Class<?>> emailActivityMap = new HashMap<>();
    emailActivityMap.put("ocmt@yahoo.com", ListActivity.class);
    emailActivityMap.put("ocmt1@yahoo.com", List2Activity.class);
    
    Class<?> targetActivity = emailActivityMap.get(email);
    if(targetActivity != null){
        Intent i = new Intent(LoginActivity.this, targetActivity);
        startActivity(i);
    } else {
        Intent i = new Intent(LoginActivity.this, List3Activity.class);
        startActivity(i);
    }
    

内容的提问来源于stack exchange,提问作者mohamed mo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:25:47