Как исправить: «E / AndroidRuntime: FATAL EXCEPTION: main»? - PullRequest
0 голосов
/ 12 февраля 2020

Я занимаюсь разработкой приложения, и каждый раз, когда я его запускаю, мое приложение вылетает. Когда я смотрю в Stack Trace , я получаю это сообщение.


E/AndroidRuntime: FATAL EXCEPTION: main
    Process: fast.com, PID: 17032
    java.lang.RuntimeException: Unable to start activity ComponentInfo{fast.com/fast.com.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.firebase.auth.FirebaseUser com.google.firebase.auth.FirebaseAuth.getCurrentUser()' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
        at android.app.ActivityThread.-wrap11(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.firebase.auth.FirebaseUser com.google.firebase.auth.FirebaseAuth.getCurrentUser()' on a null object reference
        at fast.com.MainActivity$1.<init>(MainActivity.java:30)
        at fast.com.MainActivity.onCreate(MainActivity.java:29)
        at android.app.Activity.performCreate(Activity.java:7009)
        at android.app.Activity.performCreate(Activity.java:7000)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856) 
        at android.app.ActivityThread.-wrap11(Unknown Source:0) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:164) 
        at android.app.ActivityThread.main(ActivityThread.java:6494) emphasized text
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

Когда я смотрю на Stack Trace , я ничего не понимаю. Если у вас есть время, пожалуйста, ответьте, потому что оно мне действительно нужно.

Ответы [ 2 ]

2 голосов
/ 12 февраля 2020

Caused by: java.lang.NullPointerException говорит, что ваш FirebaseAuth равен нулю, поэтому вы не можете набрать getCurrentUser на нем.

Проверьте MainActivity.java строку 29, 30.

0 голосов
/ 15 февраля 2020

Вот MainActivity

package fast.com;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;

public class MainActivity extends AppCompatActivity {

FirebaseAuth mFirebaseAuth;
private FirebaseAuth.AuthStateListener mAuthStateListener;
Button haveAccountButton, signUpButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    haveAccountButton = findViewById(R.id.haveAccountButton);

    mAuthStateListener = new FirebaseAuth.AuthStateListener() {
       FirebaseUser mFirebaseUser = mFirebaseAuth.getCurrentUser();
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
             if (mFirebaseUser != null ){
                 Toast.makeText(MainActivity.this, "You're logged in", 
Toast.LENGTH_SHORT).show();
                 Intent i = new Intent(MainActivity.this, Home.class);
                 startActivity(i);
             }
             else{
                 Toast.makeText(MainActivity.this, "Please Login", 
Toast.LENGTH_SHORT).show();
             }
        }
    };

    haveAccountButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intToSignUp = new Intent(MainActivity.this, SignUp.class);
            startActivity(intToSignUp);
        }
    });

}




}
...