java - 当用户创建帐户时,它会进入家庭活动而不是登录活动,如何避免这种情况?
问题描述
当用户单击创建帐户时,任务完成后它应该转到登录活动,但相反,它直接将其带到家庭活动(不要求登录凭据)。
我写在登录活动的意图名称中(在创建帐户按钮中)
(如果需要该信息,我还编写了检查用户是否在登录活动中登录的代码)
以下是创建帐户按钮中的代码:
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 方法获取用户的帐户数据。
因此,当您在成功创建帐户后在登录活动中检查用户是否登录时,它会找到已登录的用户并继续进行主页活动。
推荐阅读
- java - 捕获包含 URL 编码的组
- angularjs - 我怎样才能转换到一个状态,而不会打到其他功能或打开其他状态?
- wpf - 多个异步任务一个接一个完成,并允许用户做其他工作,直到完成所有任务
- git - 历史上计算未合并的 git 分支
- ios - 是否可以在应用程序运行时在设备上训练 CoreML 模型?
- python - 如何在熊猫中组合/合并多个 DataFrameGroupBy
- java - 在Scala中处理Java方法'paused()'?
- rx-java2 - 为什么发布者即使在取消后仍会发送新项目?
- azure - 如何将附加到邮件的文件移动到 Azure 上的 VM
- spring - HttpRequestExecutingMessageHandler 中的 setExpectedResponseType() 方法