【问题标题】:If ,else and else if statement are not working on button click in AndroidIf ,else 和 else if 语句不适用于 Android 中的按钮单击
【发布时间】:2022-01-25 10:23:26
【问题描述】:

我在使用 if、else 和 else if 语句时遇到问题。我正在制作一个按钮登录,在那里我使用了那种类型的代码

  edtEditText = findViewById(R.id.username);
    edtEditText1 = findViewById(R.id.password);
    String email = edtEditText.getText().toString().trim();
    String password = edtEditText1.getText().toString().trim();
    
    btn = findViewById(R.id.loginbtn);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (email.equals("")){
                Toast toast = Toast.makeText(getApplicationContext(), "Please Enter Email",Toast.LENGTH_SHORT);
                toast.show();
            }else if (password.equals("")) {
                Toast toast = Toast.makeText(getApplicationContext(), "Please Enter Password",Toast.LENGTH_SHORT);
                toast.show();
            }else {
                signIn();
            }
        }
    });

它只在这一行之后的一行起作用。

 @Override
        public void onClick(View view) {

我该如何解决这个问题?

【问题讨论】:

  • 在这种情况下,您应该使用 Android Studio 中的调试器来查看您的代码在做什么。

标签: java android android-studio


【解决方案1】:

您正在使用closure,字符串电子邮件绑定到运行时 setOnClickListener() 的值,并且可能是空字符串。

你应该这样做:

btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String email = edtEditText.getText().toString().trim();
            if (email.equals("")){

【讨论】:

    【解决方案2】:
        edtEditText = findViewById(R.id.username);
        edtEditText1 = findViewById(R.id.password);
        
        btn = findViewById(R.id.loginbtn);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String email = edtEditText.getText().toString().trim();
                String password = edtEditText1.getText().toString().trim();
                if (email.equals("")){
                    Toast toast = Toast.makeText(getApplicationContext(), "Please Enter Email",Toast.LENGTH_SHORT);
                    toast.show();
                }else if (password.equals("")) {
                    Toast toast = Toast.makeText(getApplicationContext(), "Please Enter Password",Toast.LENGTH_SHORT);
                    toast.show();
                }else {
                    signIn();
                }
            }
        });
    

    【讨论】:

    • 我试过了但没用。最后,我找到了一个有效的代码。
    • 好的,我明白了。
    【解决方案3】:

    此代码有效。

    Button signup = (Button) findViewById(R.id.signup1);
            signup.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    String email = edtEditText.getText().toString().trim();
                    String password = edtEditText1.getText().toString().trim();
                    if (TextUtils.isEmpty(email)) {
                        edtEditText.setError("Email is Required");
                        return;
                    }
    
                    if (TextUtils.isEmpty(password)) {
                        edtEditText1.setError("Password is Required");
                        return;
                    }
                    if (password.length() < 5) {
                        edtEditText1.setError("Password will be Minimum 6 Character");
                        return;
                    }
    
    
                    createAccount();
                    sendEmailVerification();
    
                }
    

    【讨论】:

    • 一个好的答案将始终包含解释为什么这会解决问题,以便 OP 和任何未来的读者可以从中学习
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-09
    • 2014-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多