[英]How do I use One login screen activity for different activities in Android?
我目前正在 Android Studio 中开发一个 Android 应用程序,我正在尝试仅将一个登录屏幕用于两个不同的屏幕,而不是使用两个登录屏幕,这将更多地使用手机内存。 我尝试使用 if 和 else 语句,如果单击按钮 1 然后发送到屏幕 1。下面是我的代码:
public void userLogin() {
String userEmail = email.getText().toString();
String userPass = password.getText().toString();
if(TextUtils.isEmpty(userEmail)){
Toast.makeText(LoginActivity.this, "Please Enter Email", Toast.LENGTH_SHORT).show();
}
if(TextUtils.isEmpty(userPass)){
Toast.makeText(LoginActivity.this, "Please Enter Password", Toast.LENGTH_SHORT).show();
}
auth.signInWithEmailAndPassword(userEmail, userPass)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
progressDialog.dismiss();
finish();
if (mainactivity.type == 1) {
Toast.makeText(LoginActivity.this, "Login Successful", Toast.LENGTH_SHORT).show();
startActivity(new Intent(LoginActivity.this, EmployeeActivity.class));
}
if(mainactivity.type == 2){
Toast.makeText(LoginActivity.this, "Login Successful", Toast.LENGTH_SHORT).show();
startActivity(new Intent(LoginActivity.this, AdminActivity.class));
}
}else{
Toast.makeText(LoginActivity.this, "ERROR: Invalid Email or Password", Toast.LENGTH_SHORT).show();
progressDialog.dismiss();
}
}
});
}
崩溃错误:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.javytharanee.quicksolattendance, PID: 7078
android.content.ActivityNotFoundException: No Activity found to handle Intent { }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2007)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1673)
at android.app.Activity.startActivityForResult(Activity.java:4586)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:767)
at android.app.Activity.startActivityForResult(Activity.java:4544)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:754)
at android.app.Activity.startActivity(Activity.java:4905)
at android.app.Activity.startActivity(Activity.java:4873)
at com.javytharanee.quicksolattendance.LoginActivity$2$override.onComplete(LoginActivity.java:89)
at com.javytharanee.quicksolattendance.LoginActivity$2$override.access$dispatch(Unknown Source:86)
at com.javytharanee.quicksolattendance.LoginActivity$2.onComplete(LoginActivity.java:77)
at com.google.android.gms.tasks.zzf.run(Unknown Source:23)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
任何帮助将不胜感激,因为我对应用程序开发完全陌生。
尝试在startActivity()
之后调用finish()
startActivity()
。 您正在失去活动的上下文,因此LoginActivity.this
返回 null。
像这样
if(mainactivity.type == 1){
Toast.makeToast(LoginActivity.this, "Message", Toast.LENGTH_SHORT);
startActivity(new Intent(LoginActivity.this, EmployeeActivity.class));
}
if(mainactivity.type == 2){
Toast.makeToast(LoginActivity.this, "Message", Toast.LENGTH_SHORT);
startActivity(new Intent(LoginActivity.this,
Employee2Activity.class));
}
LoginActivity.this.finish();
公共无效用户登录(){
String userEmail = email.getText().toString();
String userPass = password.getText().toString();
Log.e(TAG, "userLogin: "+userEmail +userPass );
if (TextUtils.isEmpty(userEmail)) {
Toast.makeText(LoginActivity.this, "Please Enter Email", Toast.LENGTH_SHORT).show();
} else if (TextUtils.isEmpty(userPass)) {
Toast.makeText(LoginActivity.this, "Please Enter Password", Toast.LENGTH_SHORT).show();
} else {
Log.e(TAG, "userLogin: " );
auth.signInWithEmailAndPassword(userEmail, userPass)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
progressDialog.dismiss();
Log.e(TAG, "onComplete: "+mainactivity.type );
if (mainactivity.type == 1) {
Toast.makeText(LoginActivity.this, "Login Successful", Toast.LENGTH_SHORT).show();
startActivity(new Intent(LoginActivity.this, EmployeeActivity.class));
finish();
} else if (mainactivity.type == 2) {
Toast.makeText(LoginActivity.this, "Login Successful", Toast.LENGTH_SHORT).show();
startActivity(new Intent(LoginActivity.this, AdminActivity.class));
finish();
}
} else {
Toast.makeText(LoginActivity.this, "ERROR: Invalid Email or Password", Toast.LENGTH_SHORT).show();
progressDialog.dismiss();
}
}
});
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.