首页 > 解决方案 > 即使我在字段中输入了一些数据,EditText 字段也被识别为空,因此程序不会继续进行

问题描述

根据 logcat,即使在输入数据后 EditText 仍然为空。我已经尝试过类型转换,但是当 registerUser 函数在没有 IF 语句的情况下运行时,应用程序仍然崩溃。我还检查了两个 EditText 字段的 ID,它们没问题。

import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;

public class MainActivity extends AppCompatActivity {
    private EditText emailText;
    private EditText passwordText;
    private Button registerButton;
    private TextView testView;
    private FirebaseAuth userAuth;
    private String email;
    private String password;

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

        emailText = findViewById(R.id.etext);
        passwordText = findViewById(R.id.ptext);
        registerButton = findViewById(R.id.rgsbutton);
        userAuth = FirebaseAuth.getInstance();

        email = emailText.getText().toString().trim();
        password = passwordText.getText().toString().trim();

        registerButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                checkInfo();
            }
        });
    }

    public void checkInfo() {
        if (TextUtils.isEmpty(email)) {
            Toast.makeText(this, "Email is required!",
                    Toast.LENGTH_SHORT).show();
        } else if (TextUtils.isEmpty(password)) {
            Toast.makeText(this, "Password is required!",
                    Toast.LENGTH_SHORT).show();
        } else {
            registerUser();
        }
    }

    private void registerUser() {
        userAuth.createUserWithEmailAndPassword(email, password)
                .addOnCompleteListener(this, new
                        OnCompleteListener<AuthResult>() {
                            @Override
                            public void onComplete(@NonNull Task<AuthResult> task) {
                                if (task.isSuccessful()) {
                                    Toast.makeText(MainActivity.this,
                                            "User registered succesfully!",
                                            Toast.LENGTH_SHORT).show();
                                } else {
                                    Toast.makeText(MainActivity.this,
                                           task.getException().getMessage(),
                                            Toast.LENGTH_SHORT).show();
                                }
                            }
                        });
    }
}

我希望电子邮件和密码是一些字符串,但实际输出为空。当我尝试使用 IF 语句运行代码时,单击按钮后,即使输入了电子邮件,我也会收到“需要电子邮件”的祝酒词。

标签: javaandroid

解决方案


从 onCreate()移动email = emailText.getText().toString().trim(); password = passwordText.getText().toString().trim();到 checkInfo()。


推荐阅读