Java Android studio:致命异常:主

Java Android studio:致命异常:主,java,android,Java,Android,在测试我的应用程序时,我在Android Studio logcat中发现以下错误: 在出现此错误之前,我单击了警报对话框按钮名称为“用空编辑文本向我发送电子邮件”的setPositiveButton 然后我很不幸的发现扭转已经停止了。 求你了,我需要帮助 E/AndroidRuntime: FATAL EXCEPTION: main Process: com.testing.twist, PID: 30072 java.lang.IllegalArgumentException: Given

在测试我的应用程序时,我在Android Studio logcat中发现以下错误:

在出现此错误之前,我单击了警报对话框按钮名称为“用空编辑文本向我发送电子邮件”的setPositiveButton

然后我很不幸的发现扭转已经停止了。 求你了,我需要帮助

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.testing.twist, PID: 30072
java.lang.IllegalArgumentException: Given String is empty or null
    at com.google.android.gms.common.internal.Preconditions.checkNotEmpty(Unknown
        Source)
    at com.google.firebase.auth.FirebaseAuth.sendPasswordResetEmail(com.google.firebase:firebase-auth@@19.3.1:307)
    at com.testing.twist.login.beginforgotpasswd(login.java:141)
    at com.testing.twist.login.access$400(login.java:26)
    at com.testing.twist.login$4.onClick(login.java:119)
    at androidx.appcompat.app.AlertController$ButtonHandler.handleMessage(AlertController.java:167)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5268)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697)
下面是我的login.java文件的一些代码

public class login extends AppCompatActivity {

    private EditText Email;
    private EditText password;
    private Button btn_login;
    private TextView tv_signup;
    private FirebaseAuth firebaseAuth;
    private TextView tv_forgotpasswd_l;

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

        Email = (EditText)findViewById(R.id.et_email_l);
        password = (EditText)findViewById(R.id.et_passwd_l);
        btn_login = (Button)findViewById(R.id.btn_l);
        tv_signup = (TextView)findViewById(R.id.tv_sign_up);
        tv_forgotpasswd_l = (TextView)findViewById(R.id.tv_f_passwd);


        firebaseAuth = FirebaseAuth.getInstance();

        FirebaseUser user = firebaseAuth.getCurrentUser();
        if(user != null){
            finish();
            startActivity(new Intent(login.this, MainActivity.class));
        }

        btn_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                validate(Email.getText().toString(), password.getText().toString());
            }
        });

        tv_signup.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(login.this,Register.class));
            }
        });

        // Login button hide

        Email.addTextChangedListener(loginTextWatcher);
        password.addTextChangedListener(loginTextWatcher);

        // recover pass textview click
        tv_forgotpasswd_l.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                showForgotpasswdDialog();
            }
        });

    }
    // Alert Dialog
    private void showForgotpasswdDialog()
    {
        //Dialog Box code
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Forgot your password?");
        //set linear layout
        LinearLayout linearLayout = new LinearLayout(this);
        linearLayout.setOrientation(LinearLayout.VERTICAL);
        linearLayout.setPadding(30,30,30,30);
        Email.setPadding(10,10,10,10);
        //view to set an dialog
        final EditText Email = new EditText(this);
        Email.setHint("Email");
        Email.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
        //text view
        linearLayout.addView(Email);
        builder.setView(linearLayout);
        //text style

        // Text view
        final TextView tv = new TextView(this);
        tv.setTextSize(14);
        tv.setTypeface(null, Typeface.BOLD);
        tv.setTextColor(Color.parseColor("black"));
        tv.setText("Unfortunately, if you have never given us your email, we will not be able to reset your password.");
        tv.setPadding(10,10,10,10);
        linearLayout.addView(tv);
        builder.setView(linearLayout);

        //buttons for EMAIL ME
        builder.setPositiveButton("EMAIL ME", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
            //input email
                String email = Email.getText().toString().trim();
                beginforgotpasswd(email);
            }
        });
        //buttons for CANCEL
        builder.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int i) {
                // dismiss dialog
                dialog.dismiss();
            }
        });

        ///show dialog
        builder.create().show();
    }

    private void beginforgotpasswd(String email)
    {
        firebaseAuth.sendPasswordResetEmail(email).addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task)
            {
                if (task.isSuccessful())
                {
                Toast.makeText(login.this,"Email sent",Toast.LENGTH_SHORT).show();
                }
                    else
                    {
                        Toast.makeText(login.this,"Failed...",Toast.LENGTH_SHORT).show();
                    }

            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
            //get and show proper error message
                Toast.makeText(login.this,""+e.getMessage(),Toast.LENGTH_SHORT).show();
            }
        });
    }



    private TextWatcher loginTextWatcher = new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            String emailInput = Email.getText().toString().trim();
            String passwdInput = password.getText().toString().trim();

            btn_login.setEnabled(!emailInput.isEmpty() && !passwdInput.isEmpty());
        }

        @Override
        public void afterTextChanged(Editable editable) {

        }
    };



    private void validate(String usremail, String usrpassword){


        firebaseAuth.signInWithEmailAndPassword(usremail,usrpassword).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(Task<AuthResult> task) {
                if(task.isSuccessful()){
                    //Toast.makeText(login.this, "Login Successful",Toast.LENGTH_SHORT).show();
                    checkEmailVerification();
                }
                else{
                    Toast.makeText(login.this, "Login Failed",Toast.LENGTH_SHORT).show();
                }
            }
        });
    }

    private void checkEmailVerification()
    {
        FirebaseUser firebaseUser = firebaseAuth.getInstance().getCurrentUser();
        Boolean emailflag = firebaseUser.isEmailVerified();

        if(emailflag)
        {
            finish();
            startActivity(new Intent(login.this,MainActivity.class));
        }
        else
        {
            Toast.makeText(login.this, "Verify your email", Toast.LENGTH_SHORT).show();
            firebaseAuth.signOut();
        }
    }
}
调用firebaseAuth.sendPasswordResetEmail需要将忘记密码电子邮件发送到的电子邮件不为空。调用函数之前,请检查电子邮件是否为空

私有void beginformgotpasswdstring电子邮件 { 如果电子邮件是空的{ //展示吐司 }否则{ firebaseAuth.sendPasswordResetEmailemail.AddOnCompleteListener新建OnCompleteListener{ @凌驾 公共空间onComplete@NonNull任务 { 如果task.isSuccessful成功 { Toast.makeTextlogin.this,发送电子邮件,Toast.LENGTH\u SHORT.show; } 其他的 { Toast.makeTextlogin.this,失败…,Toast.LENGTH\u SHORT.show; } } }.AddOnFailureListener新建OnFailureListener{ @凌驾 公共空间onFailure@NonNull例外情况e{ //获取并显示正确的错误消息 Toast.makeTextlogin.this,+e.getMessage,Toast.LENGTH\u SHORT.show; } }; } }
你的问题是什么?您正在寻找关于java.lang.IllegalArgumentException的建议。你说你有一个空的EditText,对吗?是的,我想要建议,当我用一个空的EMAIL/EditText点击EMAIL ME按钮时,时间应用程序不应该停止。在这段时间里,我想显示一条信息,比如请输入您的电子邮件etc@the.Docyes,电子邮件是空的。如果电子邮件是空的,我点击了email ME,我的应用程序不幸停止了,我该怎么办@eraftyps在beginformgotpasswd函数中检查电子邮件是否为空,如果为email.isEmpty,则显示电子邮件不应为空的祝酒词。在else块中,您可以调用firebaseAuth.sendPasswordResetEmailI do,但仍然有错误,您可以将一些代码放在哪里?如果其他条件可能我会出错@eraftyPST谢谢,错误消失了@EraftYps在这种情况下,我可以添加TextWatcher而不是toast吗?