java - 将 boolean 值从注册发送到登录,但 toast 不工作

标签 java android android-intent toast

我正在使用正确的凭据注册用户,注册完成后立即进入登录 Activity 。我只想在成功注册后显示 toast 。但我不确定我在这里做错了什么是放额外的还是额外的 boolean 值?或者我的逻辑在这里用错了。为使登录成功,需要使用 firebase 进行验证,但我需要显示提示消息以便用户知道。

这是我的 RegisterActivity.class

public void register(final String username, final String phoneNo, String email, String password) {
        auth.createUserWithEmailAndPassword(email, password)
                .addOnCompleteListener(RegisterActivity.this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {
                            FirebaseUser firebaseUser = auth.getCurrentUser();
                            assert firebaseUser != null;
                            final String userID = firebaseUser.getUid();

                            firebaseUser.sendEmailVerification().addOnCompleteListener(new OnCompleteListener<Void>() {
                                @Override
                                public void onComplete(@NonNull Task<Void> task) {
                                    if (task.isSuccessful()) {
                                        Toast.makeText(RegisterActivity.this, "You have registered successfully!", Toast.LENGTH_SHORT).show();

                                        reference = FirebaseDatabase.getInstance().getReference().child("Users").child(userID);

                                        HashMap<String, Object> map = new HashMap<>();
                                        map.put("id", userID);
                                        map.put("username", username.toLowerCase());
                                        map.put("phoneNo", phoneNo);
                                        map.put("onlineStatus", "online"); //will add later (e.g. edit profile)
                                        map.put("typingTo", "noOne"); //will add later (e.g. edit profile)
                                        map.put("imageurl", "gs://araba-92732.appspot.com/placeholder.png");
                                        map.put("about", "");

                                        reference.setValue(map).addOnCompleteListener(new OnCompleteListener<Void>() {
                                            @Override
                                            public void onComplete(@NonNull Task<Void> task) {
                                                if (task.isSuccessful()) {

                                                    pd.dismiss();
//The problem resides here
                                                    Intent intent = new Intent(RegisterActivity.this, LoginActivity.class);
                                                    intent.putExtra("isRegister", false);
                                                    startActivity(intent);
                                                    auth.signOut();
                                                    overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right);
                                                }
                                            }
                                        });
                                    } else {
                                        pd.dismiss();
                                        Toast.makeText(RegisterActivity.this, Objects.requireNonNull(task.getException()).getMessage(), Toast.LENGTH_SHORT).show();
                                    }

                                }
                            });

                        } else {
                            pd.dismiss();
                            Toast.makeText(RegisterActivity.this, "You can't register with this email or password", Toast.LENGTH_SHORT).show();
                        }
                    }
                });
    }

这是我的 LoginActivity.class

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

        email = findViewById(R.id.email);
        password = findViewById(R.id.password);
        login = findViewById(R.id.login);
        txt_signup = findViewById(R.id.txt_signup);
        RecoverPassword = findViewById(R.id.recoverPassTv);

///The problem resides here
        Intent intent = getIntent();
        boolean registers = intent.getBooleanExtra("isRegister", false);
        if(!registers)
        {
            Toast.makeText(this, "You need to verify your email address before signing in!", Toast.LENGTH_LONG).show();
        }

        auth = FirebaseAuth.getInstance();



        txt_signup.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(LoginActivity.this, RegisterActivity.class));
                overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);

            }
        });

        login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                final ProgressDialog pd = new ProgressDialog(LoginActivity.this);
                pd.setMessage("Please wait...");
                pd.show();

                String str_email = email.getText().toString();
                String str_password = password.getText().toString();

                if (TextUtils.isEmpty(str_email) || TextUtils.isEmpty(str_password)) {
                    Toast.makeText(LoginActivity.this, "All fields are required!", Toast.LENGTH_SHORT).show();
                } else {

                    auth.signInWithEmailAndPassword(str_email, str_password)
                            .addOnCompleteListener(LoginActivity.this, new OnCompleteListener<AuthResult>() {
                                @Override
                                public void onComplete(@NonNull Task<AuthResult> task) {
                                    if (task.isSuccessful()) {
                                        if (Objects.requireNonNull(auth.getCurrentUser()).isEmailVerified()) {
                                            DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Users")
                                                    .child(auth.getCurrentUser().getUid());

                                            reference.addValueEventListener(new ValueEventListener() {
                                                @Override
                                                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                                                    pd.dismiss();
                                                    Intent intent = new Intent(LoginActivity.this, MainActivity.class);
                                                    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
                                                    startActivity(intent);
                                                    overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
                                                    finish();
                                                }

                                                @Override
                                                public void onCancelled(@NonNull DatabaseError databaseError) {
                                                    pd.dismiss();
                                                }
                                            });
                                        } else {
                                            pd.dismiss();
                                            Toast.makeText(LoginActivity.this, "Please, verify your e-mail address", Toast.LENGTH_SHORT).show();
                                        }

                                    } else {
                                        pd.dismiss();
                                        Toast.makeText(LoginActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show();
                                    }
                                }
                            });
                }
            }
        });

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

    }

最佳答案

用过这个

    Intent intent = getIntent();
    boolean registers = getIntent().getExtras().getBoolean("isRegister");
    if(!registers)
    {
        Toast.makeText(LoginActivity.this, "You need to verify your email address before signing 
        in!", Toast.LENGTH_LONG).show();
    }

关于java - 将 boolean 值从注册发送到登录,但 toast 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58877432/

相关文章:

java - 为什么系统每次在新的工作空间中都会从 Maven 下载 Google App Engine Java SDK?

android ListView 不会突出显示选定的行

java - 输入的用户名不会出现在应用程序标题之后

java - 杀死所有线程后退出 Activity android

android - Intents发送后是否在排队?

java - 在数字迷宫中找到最短路径,Java

jackson json 和 spring 和 hibernate 的 java.lang.StackOverflowError

java - Jackson 用 java 解析

php - Android 将 JSON 发布到 Web 服务 php 并从服务接收 JSON

java - 在 ViewPager 中选择要开始的 fragment - Android