有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么这个吐司会在不该出现的时候出现?

你好

我有一种方法可以验证数据库中是否已经存在电话号码或电子邮件,如果是这样,用户将得到一个祝酒词,说它已经注册,并将返回注册活动,如果没有,它将继续代码

public class VerficatePhone extends AppCompatActivity {
private String mVerficationId,phoneNumber,sentCode;
private User user;
private EditText phoneCodeEditText;
private PhoneAuthProvider.ForceResendingToken mResend;
private Button activate;
private TextView backToSignupText;
private ProgressBar pBar;
private FirebaseAuth mAuth;
private DatabaseReference reff;
private boolean executed =false;



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

    phoneCodeEditText=findViewById(R.id.verificationEditText);
    activate=findViewById(R.id.activate);
    backToSignupText=findViewById(R.id.backToSignupText);
    pBar=findViewById(R.id.progressBar);

    mAuth=FirebaseAuth.getInstance();
    reff= FirebaseDatabase.getInstance().getReference().child("User");


    //getting the user that has been sent from the sign up Activity and the phone number
    if(getIntent().getSerializableExtra("userFromSignUp")!=null)
    {
        user=(User)getIntent().getSerializableExtra("userFromSignUp");
        phoneNumber=user.getPhoneNumber();

    }
    else
    {
        phoneNumber="000";
        Toast.makeText(this,"Error",Toast.LENGTH_SHORT).show();
    }

    if(!executed)
    {
        checkPhoneNumIfExists(user);
        executed =true;
    }

    sendCode(phoneNumber);
}

我的checkPhoneNumIfExists方法是这样的

 private void checkPhoneNumIfExists (final User currentUser)
{
    Log.i("checkPhoneNumIfExists method","processing");
     FirebaseDatabase fDb=FirebaseDatabase.getInstance();
        DatabaseReference dbRef=fDb.getReference();
        dbRef.child("User").addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                Iterable<DataSnapshot> children=dataSnapshot.getChildren();
                for(DataSnapshot child:children)
                {
                    if(currentUser!=null && child!=null)
                    {
                        User user= child.getValue(User.class);
                        if(user!=null && !user.getPhoneNumber().isEmpty())
                        {
                            if(currentUser.getPhoneNumber().equals(user.getPhoneNumber()) || currentUser.geteMail().equals(user.geteMail()))
                            {
                                Toast.makeText(VerficatePhone.this,"already registred",Toast.LENGTH_SHORT).show();
                                Intent i =new Intent(VerficatePhone.this,signUpActivity.class);
                                i.putExtra("userFromVerificate",currentUser);
                                i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                                startActivity(i);
                                finish();



                            }
                        }

                    }
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

    executed =true;

}

因此,问题是,当用户未注册其继续使用代码并在onCreate方法中执行sendCode方法时,该方法将打开一个新活动,但每当用户从sendCode方法打开新活动时,就会显示checkPhoneNumIfExists方法的toast

那么为什么会发生这种情况呢


共 (0) 个答案