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

Android登录表单异常:输入正确凭证仍弹出Toast无法跳转

登录验证失败问题修复

问题根源

你在onCreate方法初始化阶段就获取了输入框的文本内容,此时输入框是空的,user和pass变量会一直保持空字符串状态。后续用户输入正确的用户名密码后,点击按钮时仍然用初始化时的空值和预设凭证对比,导致永远触发错误提示,无法跳转页面。

修正后的Java代码

public class MainActivity extends AppCompatActivity {

    private Button btnLogin;
    private EditText etUsername;
    private EditText etPassword;
    String username = "bartul";
    String password = "kalinic";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnLogin = findViewById(R.id.btnLogin);
        etUsername = findViewById(R.id.etUsername);
        etPassword = findViewById(R.id.etPassword);

        btnLogin.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                // 每次点击按钮时才获取当前输入框的内容
                String user = etUsername.getText().toString();
                String pass = etPassword.getText().toString();
                
                if(!user.equals(username) || !pass.equals(password)) {
                    Toast.makeText(getApplicationContext(), "Wrong username or password entered!", Toast.LENGTH_SHORT).show();
                    etUsername.setText("");
                    etPassword.setText("");
                }
                else {
                    Intent intent = new Intent(MainActivity.this, MiNoteMenuActivity.class);
                    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(intent);
                }
            }
        });

    }
}

关键修改说明

  • 将获取输入框内容的代码移至按钮的onClick方法内部,确保每次点击登录按钮时,都能获取用户当前输入的最新用户名和密码。
  • 原代码中提前获取的空值会一直保留,无法反映用户的输入内容,这是导致验证失败的核心原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 15:20:31