Java 注册后是否指向登录活动而不是主活动?
您好,我正在使用firebase auth注册和记录用户,我有一个关于如何做的问题?因为每次我点击我的注册活动上的注册按钮,它就完成了。该活动进入主活动,而不是返回登录活动Java 注册后是否指向登录活动而不是主活动?,java,android,firebase,firebase-realtime-database,firebase-authentication,Java,Android,Firebase,Firebase Realtime Database,Firebase Authentication,您好,我正在使用firebase auth注册和记录用户,我有一个关于如何做的问题?因为每次我点击我的注册活动上的注册按钮,它就完成了。该活动进入主活动,而不是返回登录活动 btnSignUp.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //strinngs final String n
btnSignUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//strinngs
final String name = inputName.getText().toString().trim();
String email = inputEmail.getText().toString().trim();
String password = inputPassword.getText().toString().trim();
if (TextUtils.isEmpty(email)) {
Toast.makeText(getApplicationContext(), "Enter email address!", Toast.LENGTH_SHORT).show();
return;
}
if (TextUtils.isEmpty(password)) {
Toast.makeText(getApplicationContext(), "Enter password!", Toast.LENGTH_SHORT).show();
return;
}
if (password.length() < 6) {
Toast.makeText(getApplicationContext(), "Password too short, enter minimum 6 characters!", Toast.LENGTH_SHORT).show();
return;
}
if (TextUtils.isEmpty(name)){
Toast.makeText(getApplicationContext(), "Enter a name", Toast.LENGTH_SHORT).show();
return;
}
progressBar.setVisibility(View.VISIBLE);
//create user
auth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(signup.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Toast.makeText(signup.this, "createUserWithEmail:onComplete:" + task.isSuccessful(), Toast.LENGTH_SHORT).show();
progressBar.setVisibility(View.GONE);
// If sign in fails, display a message to the user. If sign in succeeds
// the auth state listener will be notified and logic to handle the
// signed in user can be handled in the listener.
if (!task.isSuccessful()) {
Toast.makeText(signup.this, "Authentication failed." + task.getException(),
Toast.LENGTH_SHORT).show();
} else {
finish();
onAuthSuccess(task.getResult().getUser());
String user_id = auth.getCurrentUser().getUid();
startActivity(new Intent(getApplicationContext(), LoginActivity.class));
}
}
private void onAuthSuccess(FirebaseUser user) {
int type =1;
final String name = inputName.getText().toString().trim();
//newuser
writeNewUser(user.getUid(), name, type, user.getEmail());
startActivity(new Intent(signup.this, LoginActivity.class));
finish();
}
btnSignUp.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//跨步
最终字符串名称=inputName.getText().toString().trim();
字符串email=inputEmail.getText().toString().trim();
字符串密码=inputPassword.getText().toString().trim();
如果(TextUtils.isEmpty(电子邮件)){
Toast.makeText(getApplicationContext(),“输入电子邮件地址!”,Toast.LENGTH\u SHORT.show();
返回;
}
if(TextUtils.isEmpty(密码)){
Toast.makeText(getApplicationContext(),“输入密码!”,Toast.LENGTH\u SHORT.show();
返回;
}
if(password.length()<6){
Toast.makeText(getApplicationContext(),“密码太短,请输入至少6个字符!”,Toast.LENGTH_short).show();
返回;
}
if(TextUtils.isEmpty(name)){
Toast.makeText(getApplicationContext(),“输入名称”,Toast.LENGTH\u SHORT.show();
返回;
}
progressBar.setVisibility(View.VISIBLE);
//创建用户
auth.createUserWithEmailAndPassword(电子邮件,密码)
.addOnCompleteListener(signup.this,new OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
Toast.makeText(signup.this,“createUserWithEmail:onComplete:“+task.issusccessful(),Toast.LENGTH\u SHORT).show();
progressBar.setVisibility(View.GONE);
//如果登录失败,则向用户显示消息。如果登录成功
//将通知身份验证状态侦听器,并使用逻辑来处理
//可以在侦听器中处理已登录用户。
如果(!task.issusccessful()){
Toast.makeText(signup.this,“身份验证失败”。+task.getException(),
吐司。长度(短)。show();
}否则{
完成();
onAuthSuccess(task.getResult().getUser());
字符串user_id=auth.getCurrentUser().getUid();
startActivity(新意图(getApplicationContext(),LoginActivity.class));
}
}
私有void onAuthSuccess(FirebaseUser用户){
int型=1;
最终字符串名称=inputName.getText().toString().trim();
//新用户
writeNewUser(user.getUid(),名称,类型,user.getEmail());
startActivity(新意图(signup.this、LoginActivity.class));
完成();
}
编辑:谢谢peter haddad。我在我的登录活动if(auth.getCurrentUser()!=null){
startActivity(新意图(LoginActivity.this、AdminActivity.class));
finish();
这就是为什么它会自动让我进入主活动,而不是登录
else {
finish();
onAuthSuccess(task.getResult().getUser());
String user_id = auth.getCurrentUser().getUid();
startActivity(new Intent(getApplicationContext(), LoginActivity.class));
}
删除上面的finish()
OP在onCreate下的登录活动中有以下内容:
if (auth.getCurrentUser() != null) {
startActivity(new Intent(LoginActivity.this, AdminActivity.class));
finish();
}
因此,它总是立即将他指向AdminActivity。要解决此问题,他必须将其删除或/并将其添加到小部件下。是的,一个新用户正在被添加到授权的firebase consoleinside方法中。成功编写此日志。i(“name”,name);在最终字符串名称=inputName.getText().toString().trim()之后
然后查看日志中的内容,在日志中检查什么,先生?如果需要,您也可以查看一下。我已经解释了整个身份验证过程。这是管理活动。我的意思是,当我单击注册按钮上的注册时,它会再次转到管理活动或主要活动,而不是登录activity@Yamiess雷莫请使用此writeNewUser(user.getUid(),name,type,user.getEmail());
进行测试并立即尝试,但我需要它来添加数据库中输入的数据,但仍然可以,它仍然会将我重定向到管理活动,而不是登录