Hi so i am doing a login / signup system using firebase, for some reason
startActivity
just doesnt want to work. here is the
Main Activity (LoginScreen)
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);
}
}
Main Class 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>
And this is the second Class (important to say , For some reason it also gives me an error :
"java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)'
on a null object reference" )
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));
}
}
Second 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"/>
(after trying the suggested solution): Update 1: I "deleted" SignIn code in order to check if the problem is inside SignIn, and still the mainclass (LoginScreen) didn't start the next activity, and also for some reason it gave me the "Enter Email" Toast,meaning it entered the other if for some reason (?) But the app didn't crash this time!
Update 2: I manged to find the bug that call the RegisterUser() , and fixed it , but again,same bug whenever i click "SignInLink" in the Loginscreen,it crashes the app if there is the same code in SignIn class, So again i decided to "delete" all code from SignIn class(leaving the class with only the xml view) , and now when ever i press the SignInLink, it just call the mainclass again without functioning (maybe it calls the login screen but doens't change the view of the buttons? i really don't know!)