Java 在Android中,如何使用一个登录屏幕活动来执行不同的活动?
我目前正在Android Studio中开发一个Android应用程序,我尝试在两个不同的屏幕上只使用一个登录屏幕,而不是使用两个登录屏幕,这将更多地使用手机内存。 我尝试使用if和else语句,单击if按钮1,然后发送到屏幕1。 下面是我的代码:Java 在Android中,如何使用一个登录屏幕活动来执行不同的活动?,java,android,android-activity,Java,Android,Android Activity,我目前正在Android Studio中开发一个Android应用程序,我尝试在两个不同的屏幕上只使用一个登录屏幕,而不是使用两个登录屏幕,这将更多地使用手机内存。 我尝试使用if和else语句,单击if按钮1,然后发送到屏幕1。 下面是我的代码: public void userLogin() { String userEmail = email.getText().toString(); String userPass = password.getText().toStri
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();
}
}
});
}
任何帮助都将不胜感激,因为我对应用程序开发一无所知 尝试在startActivity()
之后调用finish()
。您正在丢失活动的上下文,因此LoginActivity。此返回空值
像这样
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();
public void userLogin(){
String userEmail=email.getText().toString();
字符串userPass=password.getText().toString();
Log.e(标记“userLogin:”+userEmail+userPass);
if(TextUtils.isEmpty(userEmail)){
Toast.makeText(LoginActivity.this,“请输入电子邮件”,Toast.LENGTH_SHORT.show();
}else if(TextUtils.isEmpty(userPass)){
Toast.makeText(LoginActivity.this,“请输入密码”,Toast.LENGTH_SHORT.show();
}否则{
Log.e(标记“userLogin:”);
使用电子邮件和密码进行身份验证登录(userEmail,userPass)
.addOnCompleteListener(这是新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
progressDialog.disclose();
Log.e(标记“onComplete:+mainactivity.type”);
如果(mainactivity.type==1){
Toast.makeText(LoginActivity.this,“登录成功”,Toast.LENGTH_SHORT.show();
startActivity(新意图(LoginActivity.this,EmployeeActivity.class));
完成();
}else if(mainactivity.type==2){
Toast.makeText(LoginActivity.this,“登录成功”,Toast.LENGTH_SHORT.show();
startActivity(新意图(LoginActivity.this、AdminActivity.class));
完成();
}
}否则{
Toast.makeText(LoginActivity.this,“错误:无效的电子邮件或密码”,Toast.LENGTH_SHORT.show();
progressDialog.disclose();
}
}
});
}
}
这段代码到底是怎么回事?每当我登录时,应用程序就会崩溃,或者如果我编辑一些代码,即使我点击按钮2,它也只会将我发送到一个屏幕。那么,当它崩溃时,它会说什么?日志是什么?在这种情况下,你需要在这里包括crashlog。否则,我们将无法帮助您。显示Windows日志中的崩溃错误报告我已编辑了您的代码。你的逻辑有点错误。试着理解我的if else语句现在停留在登录屏幕上,它不会转到其他活动否我想转到不同的屏幕而不是后退否有一个主要活动,其中有两个按钮,当你点击其中一个按钮时,你会转到登录屏幕,当您登录时,它会转到另一个screenD/FirebaseApp:通知身份验证状态侦听器。已通知0个身份验证状态侦听器。这就是我得到的
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();
}
}
});
}
}