【发布时间】:2017-09-30 01:16:46
【问题描述】:
您好,出于某种原因,我正在使用 firebase 进行登录/注册系统
startActivity 只是不想工作。这里是
主要活动(登录屏幕)
package com.example.noam.photoupload;
import android.app.ProgressDialog;
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.analytics.FirebaseAnalytics;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
public class LoginScreen extends AppCompatActivity implements
View.OnClickListener {
private ProgressDialog Loading;
private FirebaseAuth mFireAuth;
private Button Registar;
private EditText Email;
private EditText Passowrd;
private Button Signin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login_screen);
Loading= new ProgressDialog(this);
Registar=(Button) findViewById(R.id.Register);
Email=(EditText)findViewById(R.id.EditEmail);
Passowrd=(EditText)findViewById(R.id.EditPassword);
Signin=(Button)findViewById(R.id.SignInlink);
Registar.setOnClickListener(this);
Signin.setOnClickListener(this);
mFireAuth= FirebaseAuth.getInstance();
if(mFireAuth.getCurrentUser() !=null){
finish();
startActivity(new Intent(getApplicationContext(),ProfileActive.class));
}
}
private void RegistarUser(){
String email=Email.getText().toString().trim();
String password=Passowrd.getText().toString().trim();
if(TextUtils.isEmpty(email)){
//email is empty
Toast.makeText(this,"Please enter email",Toast.LENGTH_SHORT).show();
return;
}
if(TextUtils.isEmpty(password)){
//Passowrd is empty
Toast.makeText(this,"Please enter Password",Toast.LENGTH_SHORT).show();
return;
}
Loading.setMessage("Reguistering user...");
Loading.show();
mFireAuth.createUserWithEmailAndPassword(email,password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Loading.dismiss();
if(task.isSuccessful()){
//user is Registerd ,and login
//add my start to the next screen
finish();
startActivity(new Intent(getApplicationContext(),ProfileActive.class));
}
else{
Toast.makeText(LoginScreen.this,"failed",Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
public void onClick(View view) {
if(view ==Registar){
RegistarUser();
}
if(view == Signin){
//LoginInActivity
finish();
Intent i = new Intent(LoginScreen.this, SignIn.class);
startActivity(i);
}
}
主类 XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
<Button
android:layout_margin="15dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/Register"
android:text="Register User"/>
<Button
android:layout_margin="15dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Already Registered? Sign in here"
android:id="@+id/SignInlink"
android:gravity="center"/>
</LinearLayout>
</RelativeLayout>
这是第二课(重要的是,由于某种原因它也给了我一个错误:
"java.lang.NullPointerException: 尝试调用虚方法 '空白 android.widget.Button.setOnClickListener(android.view.View$OnClickListener)'
在空对象引用上")
package com.example.noam.photoupload;
import android.app.ProgressDialog;
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.analytics.FirebaseAnalytics;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
public class SignIn extends AppCompatActivity implements
View.OnClickListener {
private ProgressDialog Loading;
private FirebaseAuth mFireAuth;
private Button Login;
private EditText Email;
private EditText Passoword;
private TextView SignUp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);Loading= new ProgressDialog(this);
setContentView(R.layout.activity_login_screen);
Login=(Button) findViewById(R.id.login);
Email=(EditText)findViewById(R.id.EditEmail);
Passoword=(EditText)findViewById(R.id.EditPassword);
SignUp=(TextView)findViewById(R.id.Signuplink);
mFireAuth= FirebaseAuth.getInstance();
Login.setOnClickListener(this);
SignUp.setOnClickListener(this);
;
}
private void UserLogin(){
String email=Email.getText().toString().trim();
String password=Passoword.getText().toString().trim();
if(TextUtils.isEmpty(email)){
//email is empty
Toast.makeText(this,"Please enter email",Toast.LENGTH_SHORT).show();
return;
}
if(TextUtils.isEmpty(password)){
//Passowrd is empty
Toast.makeText(this,"Please enter Password",Toast.LENGTH_SHORT).show();
return;
}
Loading.setMessage("Reguistering user...");
Loading.show();
mFireAuth.signInWithEmailAndPassword(email,password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Loading.dismiss();
if(task.isSuccessful()){
//user is Registerd ,and login
//add my start to the next screen
finish();
startActivity(new Intent(getApplicationContext(),ProfileActive.class));
}
else{
Toast.makeText(SignIn.this,"failed",Toast.LENGTH_SHORT).show();
}
}
});
}
@Override
public void onClick(View view) {
if(view ==Login){
UserLogin();
}
if(view == SignUp){
//LoginInActivity
finish();
startActivity(new Intent(this,LoginScreen.class));
}
}
二等 XML
<Button
android:layout_margin="15dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/login"
android:text="Login"/>
<TextView
android:layout_margin="15dp"
android:onClick="onClick"
android:clickable="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Don't have an account yet ? Signup here "
android:id="@+id/Signuplink"
android:gravity="center"/>
(在尝试了建议的解决方案之后): 更新 1: 我“删除”了登录代码以检查问题是否在登录内部,但主类(LoginScreen)仍然没有开始下一个活动,而且由于某种原因它给了我“输入电子邮件”吐司,意思是它进入了另一个如果出于某种原因(?)但应用程序这次没有崩溃!
更新 2: 我设法找到了调用 RegisterUser() 的错误并修复了它,但同样,每当我在登录屏幕中单击“SignInLink”时,同样的错误,如果 SignIn 类中有相同的代码,它会使应用程序崩溃,所以我再次决定从 SignIn 类“删除”所有代码(只留下 xml 视图的类),现在当我按下 SignInLink 时,它只是再次调用主类而没有功能(也许它调用登录屏幕但不改变按钮的视图?我真的不知道!)
【问题讨论】:
-
忘了说什么不起作用,当我按下“SignInlink”按钮时,出于某种原因,它只是不会让我进入二等舱。希望现在更清楚
标签: java android xml firebase oncreate