首页 > 解决方案 > 如何使用 Android 和 Firebase 修复此错误

问题描述

我尝试编写代码将活动从 切换MainActivitySecondActivity. 在 中,我在方法中SecondActivity初始化了一个FirebaseFirestore对象。onCreate()我使用 activity_main.xml 中的按钮从 切换MainActivitySecondActivity. 但是,我的应用程序崩溃了。单击按钮后,它没有进入 SecondActivity。我真的需要帮助来解决这个问题。我需要FirebaseFirestore通过Secondctivity.

我认为这次崩溃的主要原因是我在方法中初始化FirebaseFirestore了对象。onCreate()一旦我注释掉这个初始化,崩溃就消失了。

public class SecondActivity extends AppCompatActivity {

    EditText name;
    EditText age;
    private static final String TAG = "SecondActivity";
    FirebaseFirestore db;
    Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second2);
        name = findViewById(R.id.name);
        age = findViewById(R.id.age);
        button = findViewById(R.id.button2);
        Toast.makeText(this, "testing", Toast.LENGTH_SHORT).show();
        db = FirebaseFirestore.getInstance();
    }
}

错误如下。

E/AndroidRuntime:致命异常:主进程:com.example.hw1,PID:25341 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.hw1/com.example.hw1.SecondActivity}:java.lang。 IllegalStateException:默认 FirebaseApp 未在此进程 com.example.hw1 中初始化。确保首先调用 FirebaseApp.initializeApp(Context)。

在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)

在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)

在 android.app.ActivityThread.-wrap11(未知来源:0)

在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)

在 android.os.Handler.dispatchMessage(Handler.java:105)

在 android.os.Looper.loop(Looper.java:164)

在 android.app.ActivityThread.main(ActivityThread.java:6541)

在 java.lang.reflect.Method.invoke(本机方法)

在 com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)

在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

原因:java.lang.IllegalStateException:默认 FirebaseApp 未在此进程 com.example.hw1 中初始化。确保首先调用 FirebaseApp.initializeApp(Context)。

在 com.google.firebase.FirebaseApp.getInstance(com.google.firebase:firebase-common@@16.1.0:245)

在 com.google.firebase.firestore.FirebaseFirestore.getInstance(com.google.firebase:firebase-firestore@@18.2.0:70)

在 com.example.hw1.SecondActivity.onCreate(SecondActivity.java:37)

在 android.app.Activity.performCreate(Activity.java:6975)

在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)

在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)

在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892) 

在 android.app.ActivityThread.-wrap11(未知来源:0) 

在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593) 

在 android.os.Handler.dispatchMessage(Handler.java:105) 

在 android.os.Looper.loop(Looper.java:164) 

在 android.app.ActivityThread.main(ActivityThread.java:6541) 

在 java.lang.reflect.Method.invoke(本机方法) 

在 com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 

在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 

i/zygote:做部分代码缓存收集,code=16KB,data=20KB

代码缓存收集后,代码=16KB,数据=20KB

I/zygote:将代码缓存容量增加到128KB I/zygote:做部分代码缓存收集,code=16KB,data=37KB

代码缓存收集后,代码=16KB,数据=37KB

将代码缓存容量增加到 256KB

I/zygote:JIT 为 void android.widget.TextView.(android.content.Context, android.util.AttributeSet, int, int) 的编译代码分配了 71KB

编译器分配 4MB 来编译 void android.widget.TextView.(android.content.Context, android.util.AttributeSet, int, int)

标签: javaandroidfirebase

解决方案


You need call

FirebaseApp.initializeApp(Context);

before

db = FirebaseFirestore.getInstance();


推荐阅读