[英]How to fix this error with Android and Firebase
我嘗試編寫代碼將活動從MainActivity
切換到SecondActivity
。 在SecondActivity
,我在onCreate()
方法中初始化了一個FirebaseFirestore
對象。 我使用 activity_main.xml 中的按鈕從MainActivity
切換到SecondActivity
。 但是,我的應用程序崩潰了。 單擊按鈕后,它沒有轉到 SecondActivity。 我真的需要幫助來解決這個問題。 我需要通過Secondctivity
FirebaseFirestore
對象將一些數據寫入Secondctivity
。
我認為這次崩潰的主要原因是我在onCreate()
方法中初始化了FirebaseFirestore
對象。 一旦我注釋掉這個初始化,崩潰就消失了。
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: FATAL EXCEPTION: main Process: com.example.hw1, PID: 25341 java.lang.RuntimeException: Unable to start Activity ComponentInfo{com.example.hw1/com.example.hw1.SecondActivity}: java.lang. IllegalStateException:在此進程 com.example.hw1 中未初始化默認 FirebaseApp。 確保首先調用 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(Native Method)
在 com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
引起:java.lang.IllegalStateException:在這個進程com.example.hw1中沒有初始化默認FirebaseApp。 確保首先調用 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(Native Method)
在 com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
I/zygote:做部分代碼緩存收集,代碼=16KB,數據=20KB
代碼緩存收集后,代碼=16KB,數據=20KB
I/zygote:增加代碼緩存容量到128KB I/zygote:做部分代碼緩存收集,代碼=16KB,數據=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)
你需要打電話
FirebaseApp.initializeApp(Context);
前
db = FirebaseFirestore.getInstance();
請參閱FirebaseApp
解釋,我認為不需要像建議的錯誤日志那樣在代碼中調用initializeApp
,除非您使用不同的 Firebase 項目。 我認為問題出在您的程序的初始化過程中,或者您的項目配置錯誤,例如,錯誤/損壞的google-services.json
文件、Firebase 控制台中設置的錯誤包名稱或其他問題可能會導致問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.