Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当我切换到“活动”或首先调用onDataChanged时,onCreate()未运行_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Java 当我切换到“活动”或首先调用onDataChanged时,onCreate()未运行

Java 当我切换到“活动”或首先调用onDataChanged时,onCreate()未运行,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我正在做一个学校项目,我正在使用firebase身份验证和电子邮件和密码。当用户登录时,我遇到问题,然后返回“登录”页面并尝试创建新帐户。当单击submit按钮创建他的新帐户而不是返回登录页面时,它将转到users主页面。只有当用户已签名并尝试注册另一个帐户时,才会发生这种情况。我已经尝试在用户返回登录页面时注销用户,但没有成功。这是我的密码: 登录页面: public class SignIn extends AppCompatActivity { EditText email,pass;

我正在做一个学校项目,我正在使用firebase身份验证和电子邮件和密码。当用户登录时,我遇到问题,然后返回“登录”页面并尝试创建新帐户。当单击submit按钮创建他的新帐户而不是返回登录页面时,它将转到users主页面。只有当用户已签名并尝试注册另一个帐户时,才会发生这种情况。我已经尝试在用户返回登录页面时注销用户,但没有成功。这是我的密码:

登录页面:

public class SignIn extends AppCompatActivity {

EditText email,pass;
private FirebaseAuth mAuth;
FirebaseUser user;
FirebaseDatabase db;
DatabaseReference mRef;
String type,name;

public ProgressDialog pd;

Context context;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_sign_in);
    mAuth = FirebaseAuth.getInstance();
    email = findViewById(R.id.inpSigninEmail);
    pass = findViewById(R.id.inpSigninPass);
    db.getInstance();
    mRef = FirebaseDatabase.getInstance().getReference().child("Users/");
    type=null;
    name=null;
    context=this;
    Log.e("asd","Loginoncreate");
}

public void signIn (View view){
    if (email.getText().toString().trim().length() < 1 || pass.getText().toString().trim().length() < 1){
        Toast.makeText(getApplicationContext(), "Please fill your information.", Toast.LENGTH_LONG).show();
    }else{
        pd = new ProgressDialog(this);
        pd.setMessage("Signing in...");
        pd.show();
        mAuth.signInWithEmailAndPassword(email.getText().toString(), pass.getText().toString()).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if (task.isSuccessful()){
                    user = mAuth.getCurrentUser();
                    mRef.addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot snapshot) {
                            while (type==null){
                                for (DataSnapshot dataSnapshot : snapshot.getChildren()){
                                    type = String.valueOf(dataSnapshot.child(user.getUid()).child("/Type").getValue());
                                    if (type!="null"){
                                        break;
                                    }
                                }
                            }
                            while (name==null){
                                for (DataSnapshot dataSnapshot : snapshot.getChildren()){
                                    name = String.valueOf(dataSnapshot.child(user.getUid()).child("/Name").getValue());
                                    if (name!="null"){
                                        break;
                                    }
                                }
                            }
                            pd.dismiss();
                            if (type.matches("user")){
                                Intent intent = new Intent(context, UserMain.class);
                                intent.putExtra("name", name);
                                type=null;
                                name=null;
                                startActivity(intent);
                                finish();
                                Log.e("as","loginUser");
                            }else{
                                Intent intent = new Intent(context, CompanyMain.class);
                                intent.putExtra("name", name);
                                startActivity(intent);
                                finish();
                                type=null;
                                name=null;
                            }
                        }

                        @Override
                        public void onCancelled(@NonNull DatabaseError error) {
                            pd.dismiss();
                            Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_SHORT).show();
                        }
                    });

                }else{
                    pd.dismiss();
                    Toast.makeText(getApplicationContext(), task.getException().getMessage(),Toast.LENGTH_LONG).show();
                }
            }
        });
    }
}

public void signUp (View view){
    startActivity(new Intent(SignIn.this, SignUp.class));
    finish();
}
公共类登录扩展了AppCompatActivity{
编辑文本邮件,传递;
私人消防队;
FirebaseUser用户;
FirebaseDB数据库;
数据库参考mRef;
字符串类型、名称;
公共发展对话;
语境;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u sign\u in);
mAuth=FirebaseAuth.getInstance();
email=findviewbyd(R.id.inpSigninEmail);
通过=findViewById(R.id.inpSigninPass);
db.getInstance();
mRef=FirebaseDatabase.getInstance().getReference().child(“Users/”);
type=null;
name=null;
上下文=这个;
Log.e(“asd”、“LoginCreate”);
}
公共无效登录(查看){
if(email.getText().toString().trim().length()<1 | | pass.getText().toString().trim().length()<1){
Toast.makeText(getApplicationContext(),“请填写您的信息”,Toast.LENGTH\u LONG.show();
}否则{
pd=新进度对话框(本);
pd.setMessage(“登录…”);
pd.show();
mAuth.signInWithEmailAndPassword(email.getText().toString(),pass.getText().toString()).addOnCompleteListener(这是新的OnCompleteListener()){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
user=mAuth.getCurrentUser();
mRef.addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot snapshot snapshot){
while(type==null){
对于(DataSnapshot DataSnapshot:snapshot.getChildren()){
type=String.valueOf(dataSnapshot.child(user.getUid()).child(“/type”).getValue());
如果(类型!=“null”){
打破
}
}
}
while(name==null){
对于(DataSnapshot DataSnapshot:snapshot.getChildren()){
name=String.valueOf(dataSnapshot.child(user.getUid()).child(“/name”).getValue());
如果(名称!=“空”){
打破
}
}
}
pd.解散();
if(type.matches(“用户”)){
意图=新意图(上下文,UserMain.class);
意向。额外(“名称”,名称);
type=null;
name=null;
星触觉(意向);
完成();
Log.e(“作为”、“登录用户”);
}否则{
意向意向=新意向(上下文,CompanyMain.class);
意向。额外(“名称”,名称);
星触觉(意向);
完成();
type=null;
name=null;
}
}
@凌驾
已取消公共void(@NonNull DatabaseError){
pd.解散();
Toast.makeText(getApplicationContext(),error.getMessage(),Toast.LENGTH_SHORT.show();
}
});
}否则{
pd.解散();
Toast.makeText(getApplicationContext(),task.getException().getMessage(),Toast.LENGTH_LONG).show();
}
}
});
}
}
公共无效注册(视图){
startActivity(新意图(SignIn.this,SignUp.class));
完成();
}
}

注册页面:

public class SignUp extends AppCompatActivity {

EditText name,email,pass;
private FirebaseAuth mAuth;
FirebaseDatabase db;
FirebaseUser user;
RadioButton Rbtn;
RadioGroup Rgroup;
DatabaseReference mRef;

boolean out = false;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_sign_up);
    mAuth = FirebaseAuth.getInstance();
    name = findViewById(R.id.inpSignupName);
    email = findViewById(R.id.inpSignupEmail);
    pass = findViewById(R.id.inpSignupPass);
    Rgroup = findViewById(R.id.radioGroup);
    db = FirebaseDatabase.getInstance();
    mRef = db.getReference("Users/");
    Log.e("asd","Signuponcreate");
}

public void submit (View view){
    if (name.getText().toString().trim().length() < 1 || email.getText().toString().trim().length() < 1 || pass.getText().toString().trim().length() < 1){
        Toast.makeText(getApplicationContext(), "Please fill your information.", Toast.LENGTH_LONG).show();
    }else{
        mAuth.createUserWithEmailAndPassword(email.getText().toString() , pass.getText().toString()).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if (task.isSuccessful()){
                    Toast.makeText(getApplicationContext(),"Sign Up success!",Toast.LENGTH_LONG).show();
                    user = mAuth.getCurrentUser();
                    int radioId = Rgroup.getCheckedRadioButtonId();
                    Rbtn = findViewById(radioId);
                    if (Rbtn.getText().equals("User")){
                        mRef.child("/Normal").child(user.getUid()).child("/Name").setValue(name.getText().toString());
                        mRef.child("/Normal").child(user.getUid()).child("/Type").setValue("user");
                    }else{
                        mRef.child("/Company").child(user.getUid()).child("/Name").setValue(name.getText().toString());
                        mRef.child("/Company").child(user.getUid()).child("/Type").setValue("company");
                    }
                    startActivity(new Intent(SignUp.this, SignIn.class));
                    finish();
                    Log.e("as","signupUserGotoSignin");
                }else{
                    Toast.makeText(getApplicationContext(), task.getException().getMessage(),Toast.LENGTH_LONG).show();
                }
            }
        });
    }
}
公共类注册扩展了AppCompative活动{
编辑文本名称、电子邮件、通行证;
私人消防队;
FirebaseDB数据库;
FirebaseUser用户;
无线按钮Rbtn;
放射组Rgroup;
数据库参考mRef;
布尔输出=假;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u注册);
mAuth=FirebaseAuth.getInstance();
name=findviewbyd(R.id.inpSignupName);
email=findviewbyd(R.id.inSignupEmail);
通过=findViewById(R.id.inpSignupPass);
Rgroup=findviewbyd(R.id.radioGroup);
db=FirebaseDatabase.getInstance();
mRef=db.getReference(“Users/”);
Log.e(“asd”、“Signuponcreate”);
}
公共作废提交(查看){
if(name.getText().toString().trim().length()<1 | | email.getText().toString().trim().length()<1 | | | pass.getText().toString().trim().length()<1){
Toast.makeText(getApplicationContext(),“请填写您的信息”,Toast.LENGTH\u LONG.show();
}否则{
mAuth.createUserWithEmailAndPassword(email.getText().toString(),pass.getText().toString()).addOnCompleteListener(这是新的OnCompleteListener()){
@凌驾
未完成的公共无效(@NonNull)
android:onClick="signIn"
Button button = findViewById(R.id.SignInbutton);
button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //put your signIn button all code here
        }
    });