我尝试编写代码以将活动从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)
答案 0 :(得分:0)
您需要致电
FirebaseApp.initializeApp(Context);
之前
db = FirebaseFirestore.getInstance();
答案 1 :(得分:0)
请参阅FirebaseApp
的说明,除非您使用的是其他Firebase项目,否则我认为不需要像建议的错误日志一样在代码中调用initializeApp
。我认为问题出在程序的初始化过程中,或者项目的配置错误,例如google-services.json
文件错误/损坏,在Firebase控制台中设置的软件包名称错误或其他原因可能会导致问题的原因。