Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何修复:“;E/AndroidRuntime:致命异常:主“异常”;?_Java_Android_Crash - Fatal编程技术网

Java 如何修复:“;E/AndroidRuntime:致命异常:主“异常”;?

Java 如何修复:“;E/AndroidRuntime:致命异常:主“异常”;?,java,android,crash,Java,Android,Crash,我正在开发一个应用程序,每次运行它,我的应用程序都会崩溃。当我查看堆栈跟踪时,我收到此消息 E/AndroidRuntime:致命异常:主 进程:fast.com,PID:17032 java.lang.RuntimeException:无法启动活动组件信息{fast.com/fast.com.MainActivity}:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'com.google.firebase.auth.FirebaseUser.co

我正在开发一个应用程序,每次运行它,我的应用程序都会崩溃。当我查看堆栈跟踪时,我收到此消息


E/AndroidRuntime:致命异常:主
进程:fast.com,PID:17032
java.lang.RuntimeException:无法启动活动组件信息{fast.com/fast.com.MainActivity}:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'com.google.firebase.auth.FirebaseUser.com.google.firebase.auth.FirebaseAuth.getCurrentUser()
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
位于android.app.ActivityThread.-wrap11(未知来源:0)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)上
位于android.os.Handler.dispatchMessage(Handler.java:106)
位于android.os.Looper.loop(Looper.java:164)
位于android.app.ActivityThread.main(ActivityThread.java:6494)
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
原因:java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“com.google.firebase.auth.FirebaseUser com.google.firebase.auth.FirebaseAuth.getCurrentUser()”
在fast.com.MainActivity$1。(MainActivity.java:30)
位于fast.com.MainActivity.onCreate(MainActivity.java:29)
位于android.app.Activity.performCreate(Activity.java:7009)
位于android.app.Activity.performCreate(Activity.java:7000)
位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
位于android.app.ActivityThread.-wrap11(未知来源:0)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)上
位于android.os.Handler.dispatchMessage(Handler.java:106)
位于android.os.Looper.loop(Looper.java:164)
在android.app.ActivityThread.main(ActivityThread.java:6494)中强调了文本
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

当我查看堆栈跟踪时,我什么都不懂。如果您有时间,请回答,因为我真的需要它。

原因: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);
        }
    });

}




}

特别是在这里,你会想看看“造成的”一行。阅读整行文字,它说明了错误是什么。然后读下一行,它告诉你事情发生的地方。如果这仍然没有意义,请发布您的
MainActivity
类。我检查了我的MainActivity.java lin e29,30,没有发现任何错误mauthStateListener=new FirebaseAuth.AuthStateListener()@Seyinator请发布您的MainActivity类(fast.com.MainActivity)为了进一步的分析,你能看看我刚刚发布的源代码吗now@Seyinator您从未向
mFirebaseAuth
赋值,因此该值为空。调用
FirebaseUser mFirebaseUser=mFirebaseAuth.getCurrentUser()
时,将抛出NPE(NullPointerException)。附言:你应该编辑问题而不是添加答案
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);
        }
    });

}




}