I used Firebase for the database and authentication. And whenever I click on Login Button or Registration button, the app crashes every time. I think I am not able to connect my app with Firebase that's why this error is showing. Please help someone.
I have added the codes and the error snippet below.
RegistrationActivity.java
public class RegistrationActivity extends AppCompatActivity {
Button mregistration;
EditText memail,mpass,mname;
FirebaseAuth mauth;
FirebaseAuth.AuthStateListener firebaseAuthStateListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_registration);
firebaseAuthStateListener= firebaseAuth -> {
FirebaseUser user= FirebaseAuth.getInstance().getCurrentUser();
//security purpose
if(user!=null)
{
Intent intent=new Intent(getApplication(),MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
}
};
mauth=FirebaseAuth.getInstance();
mregistration=findViewById(R.id.registration);
mname=findViewById(R.id.name);
memail=findViewById(R.id.emailid);
mpass=findViewById(R.id.password);
mregistration.setOnClickListener(v -> {
final String name= mname.getText().toString();
final String email= memail.getText().toString();
final String pass= mpass.getText().toString();
mauth.createUserWithEmailAndPassword(email,pass).addOnCompleteListener((Executor) getApplication(), task -> {
if(!task.isSuccessful())
{
Toast.makeText(getApplication(), "Sign in ERROR", Toast.LENGTH_SHORT).show();
}
else{
String userId= Objects.requireNonNull(mauth.getCurrentUser()).getUid();
DatabaseReference currentUserDb= FirebaseDatabase.getInstance().getReference().child("users").child(userId);
Map userInfo=new HashMap<>();
userInfo.put("email",email);
userInfo.put("name",name);
userInfo.put("profileImageUrl","default");
currentUserDb.updateChildren(userInfo);
}
});
});
}
protected void onStart() {
super.onStart();
mauth.addAuthStateListener(firebaseAuthStateListener);
}
@Override
protected void onStop() {
super.onStop();
mauth.removeAuthStateListener(firebaseAuthStateListener);
}
BUILD GRADLE
plugins {
id 'com.android.application'}
android {
compileSdkVersion 30
buildToolsVersion "30.0.3"
defaultConfig {
applicationId "com.ishita.snapchatfilter"
minSdkVersion 28
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}}
dependencies {
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.0'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
implementation 'com.google.firebase:firebase-bom:29.0.3'
implementation 'com.google.firebase:firebase-auth'
implementation 'com.google.firebase:firebase-auth:18.0.0'
implementation 'com.google.firebase:firebase-database:18.0.0'
}
ERROR I GET:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.ishita.snapchatfilter, PID: 29152
java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.ishita.snapchatfilter/com.ishita.snapchatfilter.RegistrationActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3797)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3973)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2307)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:246)
at android.app.ActivityThread.main(ActivityThread.java:8528)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
at com.ishita.snapchatfilter.RegistrationActivity.onCreate(RegistrationActivity.java:58)
at android.app.Activity.performCreate(Activity.java:8207)
at android.app.Activity.performCreate(Activity.java:8191)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3770)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3973)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2307)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:246)
at android.app.ActivityThread.main(ActivityThread.java:8528)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
I/Process: Sending signal. PID: 29152 SIG: 9