如何使用Android和Firebase修复此错误

时间:2019-04-03 01:56:01

标签: java android firebase

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

我认为导致崩溃的主要原因是我在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 / Android运行时:致命异常:主要       流程: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 /合子:执行部分代码缓存收集,代码= 16KB,数据= 20KB

     

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

     

I /合子:将代码缓存容量增加到128KB I /合子:做部分   代码缓存集合,代码= 16KB,数据= 37KB

     

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

     

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

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

     

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

2 个答案:

答案 0 :(得分:0)

您需要致电

FirebaseApp.initializeApp(Context);

之前

db = FirebaseFirestore.getInstance();

答案 1 :(得分:0)

请参阅FirebaseApp的说明,除非您使用的是其他Firebase项目,否则我认为不需要像建议的错误日志一样在代码中调用initializeApp。我认为问题出在程序的初始化过程中,或者项目的配置错误,例如google-services.json文件错误/损坏,在Firebase控制台中设置的软件包名称错误或其他原因可能会导致问题的原因。