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
相关产品推荐
相关产品推荐

