尽pipe在Application类中调用了FirebaseApp.initializeApp(),FirebaseApp仍未初始化

我正在创build一个Android应用程序,我正在尝试使用Firebase实现用户身份validation。 据我所知,我的应用程序已连接到我的Firebase服务器。

尝试通过buttonbutton从SignIn活动切换到SignUp活动时遇到运行时错误。 该应用程序崩溃,我遇到一个运行时错误。

据我所知,当我尝试用FirebaseAuth.getInstance()初始化FirebaseAuth对象时,运行时错误来自SignUp活动的onCreate()调用。 这个电话由于失败

 java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process seniordesign.phoneafriend. Make sure to call FirebaseApp.initializeApp(Context). 

然而,我在我的应用程序类的onCreate()方法,我认为会很好的这个调用。 我添加了initalizeApp()调用SignUp的onCreate()调用,但没有骰子。 我已经找过这个问题的其他人,但还没有find类似的东西。 谢谢你的帮助。

AndroidManifest.xml中

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="seniordesign.phoneafriend"> <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme" android:name="seniordesign.phoneafriend.PhoneAFriend"> <activity android:name=".SignIn"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".SignUp"></activity> </application> </manifest> 

PhoneAFriend.java(我的应用程序类)

 public class PhoneAFriend extends Application { public void onCreate(){ super.onCreate(); Firebase.setAndroidContext(this); FirebaseApp.initializeApp(this); } } 

SignUp.java

 public class SignUp extends AppCompatActivity { protected Firebase ref; protected EditText emailText; protected EditText passText; protected EditText confirmText; protected Button button; protected SignUp thisContext; protected FirebaseAuth auth; protected FirebaseAuth.AuthStateListener authListener; private View.OnClickListener onClickListener; public static Intent intent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_signup); ref = new Firebase("https://phoneafriend-7fb6b.firebaseio.com"); emailText = (EditText) findViewById(R.id.signup_emailText); passText = (EditText) findViewById(R.id.signup_passwordText); confirmText = (EditText) findViewById(R.id.signup_passwordConfirm); intent = new Intent(this, SignIn.class); //Tried this already //FirebaseApp.initializeApp(this); auth = FirebaseAuth.getInstance(); button = (Button) findViewById(R.id.signup_button); onClickListener = new View.OnClickListener() { @Override public void onClick(View view) { createUser(view); Log.v("SignUp Button" , "Clicked; Attempting to create user"); } }; button.setOnClickListener(onClickListener); authListener = new FirebaseAuth.AuthStateListener() { @Override public void onAuthStateChanged( FirebaseAuth firebaseAuth) { FirebaseUser user = firebaseAuth.getCurrentUser(); if (user != null) { // User is signed in Log.d("FirebaseAuth", "onAuthStateChanged:signed_in:" + user.getUid()); } else { // User is signed out Log.d("FirebaseAuth", "onAuthStateChanged:signed_out"); } // ... } }; thisContext = this; } @Override public void onStart(){ super.onStart(); //auth.addAuthStateListener(authListener); } @Override public void onStop(){ super.onStop(); if(authListener != null) { //auth.removeAuthStateListener(authListener); } } protected void createUser(View view){ String cString = null; String pString = null; String eString = emailText.getText().toString(); if(passText.getText() != null && confirmText.getText() != null) { pString = passText.getText().toString(); cString = confirmText.getText().toString(); Log.v("SignUP: Pass Null check" , "Pass" ); if (emailText.getText() != null && pString.equals(cString) && passText.getText() != null) { Log.v("SignUP: Sign up check " , "Pass"); auth.createUserWithEmailAndPassword(emailText.getText().toString() , passText.getText().toString()) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { Log.v("createUser complete" , "status: " + task.isSuccessful()); if(task.isSuccessful()){ startActivity(SignUp.intent); } } }); } } return; } } 

Solutions Collecting From Web of "尽pipe在Application类中调用了FirebaseApp.initializeApp(),FirebaseApp仍未初始化"

就像qbix所说的,你可以使用你要使用的任何版本的API调用。 如果可能的话,你应该使用更新的API,因为它将来会得到更多的支持。

请参阅这里的文档:

https://firebase.google.com/docs/database/android/start/

去掉:

 Firebase.setAndroidContext(this); FirebaseApp.initializeApp(this); 

并且说:

 FirebaseDatabase database = FirebaseDatabase.getInstance(); 

如果qbix把他的评论置于一个答案中,那么你应该接受他的而不是我的看法,他有几分钟就打败了我。

也:

如果您使用的是旧版本的Firebase并需要帮助切换,那么本指南即将亮相,并将帮助您切换。 这是一个相当简单的开关。

https://firebase.google.com/support/guides/firebase-android

我知道已经有一个被接受的答案。 但是,我遇到了同样的错误消息,说: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process (name). Make sure to call FirebaseApp.initializeApp(Context). java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process (name). Make sure to call FirebaseApp.initializeApp(Context). 我尝试了几种在SO上find的解决scheme,然后仔细检查所有内容,直到最终发现Firebase Console中定义的软件包名称与我的清单文件中定义的软件包名称不匹配。

尝试转到您的Firebase控制台 – >项目设置 – >检查包名是否匹配。

希望它可以帮助一些:)

使用Android Studio中包含的Firebase向导更容易:它将所有依赖关系添加到gradle文件中,根据需要创buildFirebase项目,将应用程序与项目连接等。

在Android Studio打开菜单Tools / Firebase并按照说明进行操作。

然后FirebaseApp.initializeApp()将返回一个有效的值。