如何修复:"E/AndroidRuntime: FATAL EXCEPTION: main"?
How to fix: "E/AndroidRuntime: FATAL EXCEPTION: main"?
我正在开发一个应用程序,但每次 运行 我的应用程序都会崩溃。当我查看 堆栈跟踪 时,我收到此消息。
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.<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 时,我什么都不懂。如果你有时间请回答,因为我真的需要它。
Caused by: java.lang.NullPointerException
说你的 FirebaseAuth
是空的,所以你不能在上面调用 getCurrentUser
。
检查您的 MainActivity.java
第 29、30 行。
这里是 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);
}
});
}
}
我正在开发一个应用程序,但每次 运行 我的应用程序都会崩溃。当我查看 堆栈跟踪 时,我收到此消息。
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.<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 时,我什么都不懂。如果你有时间请回答,因为我真的需要它。
Caused by: java.lang.NullPointerException
说你的 FirebaseAuth
是空的,所以你不能在上面调用 getCurrentUser
。
检查您的 MainActivity.java
第 29、30 行。
这里是 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);
}
});
}
}