当用户创建帐户时,它会进入主页活动而不是登录活动,如何避免这种情况



当用户点击创建帐户时,任务完成后,它应该转到登录活动,但它直接将其带到主活动(无需要求登录凭据(。

我在登录活动的意图名称中写道(在创建帐户按钮中(

(如果需要的话,我还写了检查用户是否登录登录活动的代码(

以下是创建帐户按钮中的代码:

cma.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

//getting the data
username= nun.getText().toString().trim();
status= sta.getText().toString().trim();
emailid= ei.getText().toString().trim();
courses= cou.getText().toString().trim();
year = yr.getSelectedItem().toString();
dateofbirth= dob.getText().toString().trim();
collegeid= cid.getText().toString().trim();
password= pw1.getText().toString().trim();
cpass= pw2.getText().toString().trim();
int selectedId = gender.getCheckedRadioButtonId();
sexgender = (RadioButton) findViewById(selectedId);
final String gender = sexgender.getText().toString().trim();
if (circularImageView.getDrawable() != null) {
cma.setText("Creating Fresh Account....");
createAccProgress.setVisibility(View.VISIBLE);
//get image from imageview
Bitmap bitmap = ((BitmapDrawable) circularImageView.getDrawable()).getBitmap();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
//image compress
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
data = baos.toByteArray();
String filePathAndName="ProfilePictures/"+"profile_"+ emailid;
StorageReference ref = FirebaseStorage.getInstance().getReference().child(filePathAndName);
ref.putBytes(data)
//ERROR on Line Below
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
//Success to firebase storage
Task<Uri> uriTask = taskSnapshot.getStorage().getDownloadUrl();
while (!uriTask.isSuccessful());
downloadUri = uriTask.getResult().toString();
if (uriTask.isSuccessful()) {
mauth.createUserWithEmailAndPassword(emailid,cpass).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task){
if(task.isSuccessful()) {
//Custom Field save code
Student info = new Student(username,status,emailid,year,courses,gender,dateofbirth,collegeid,downloadUri);
reference.child(username).setValue(info).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task){
createAccProgress.setVisibility(View.GONE);
if(task.isSuccessful()) {
Toast.makeText(Sign_up.this,"Account successfully Created !", Toast.LENGTH_LONG).show();
Intent i = new Intent(Sign_up.this, LogIn.class);
startActivity(i);
} else{
String errorMessage = task.getException().getMessage();
Toast.makeText(Sign_up.this, "Error: " + errorMessage, Toast.LENGTH_LONG).show();
}
}
});
//End custom field
} else{
Toast.makeText(Sign_up.this, task.getException().getMessage(), Toast.LENGTH_SHORT).show();
}
//Authentication Stuff
}
});
}
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(Sign_up.this, "Failed Uploading image", Toast.LENGTH_SHORT).show();
}
});
}
else { }
//Button Brackets
}
});
}

根据文档:

如果创建了新帐户,用户也会登录。在回调中,您可以使用getCurrentUser方法来获取用户的帐户数据。

因此,当您在成功创建帐户后检查用户是否已登录登录"登录活动"时,它会发现用户已登录,并继续执行"主页活动"。

正如@Sabet Chowdhury告诉的那样

根据文件:

如果创建了新帐户,用户也会登录。在回调中,您可以使用getCurrentUser方法来获取用户的帐户数据。

解决方案是对任务进行以下更改。成功的代码:

if(task.isSuccessful()) {
Toast.makeText(Sign_up.this,"Account successfully Created !", Toast.LENGTH_LONG).show();
//BY ADDING THE FOLLOWING LINE IT WILL SIGN OUT THE USER AND ULTIMATELY WILL LAUNCH LOGIN ACTIVITY
FirebaseAuth.getInstance().signOut();
Intent i = new Intent(Sign_up.this, LogIn.class);
startActivity(i);
}

最新更新