2017-09-13 14 views
0

私はFirebaseデータベースを使用しようとしていますが、FirebaseAppは、このプロセスcom.exampleに初期化されていない不正な状態例外不正な状態例外Firebaseデータベース

デフォルトに直面しています。 最初にFirebaseApp.initializeApp(Context)を呼び出してください。

私はどこからでもインスタンス化できるユーティリティクラスを作成しました。私はアプリケーションとアクティビティ(onCreate)の両方のレベルで試してみましたが、結果は同じです。

public class FirebaseUtils { 
    private static final String TAG = FirebaseUtils.class.getSimpleName(); 

    private static FirebaseDatabase mFirebaseDatabase; 
    private static DatabaseReference mDbReference; 

    // listeners 
    private static OnFirebaseValueListener mFirebaseValueListener; 

    /** 
    * Method is used to set callback to listen to value changes in Firebase DB 
    * 
    * @param listener 
    */ 
    public static void onFirebaseValueListener(OnFirebaseValueListener listener) { 
     mFirebaseValueListener = listener; 
    } 

    /** 
    * Constructor 
    */ 
    public FirebaseUtils(Context context) { 
     FirebaseApp.initializeApp(context); 
     mFirebaseDatabase = FirebaseDatabase.getInstance(); 
     mDbReference = mFirebaseDatabase.getReference(); 
    } 

    /** 
    * Method is used to add a list of values to Firebase DB 
    * 
    * @param alHistory 
    */ 
    public static void addValues(List<?> alHistory) { 
     if (!FrameworkUtils.checkIfNull(mDbReference)) { 
      // set value 
      mDbReference.setValue(alHistory); 
      mDbReference.addValueEventListener(new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 
        Log.i(TAG, "<onDataChange> successful!"); 
        if (!FrameworkUtils.checkIfNull(mFirebaseValueListener)) { 
         mFirebaseValueListener.onDataChange(dataSnapshot); 
        } 
       } 

       @Override 
       public void onCancelled(DatabaseError databaseError) { 
        if (!FrameworkUtils.checkIfNull(databaseError) && !FrameworkUtils.isStringEmpty(databaseError.getMessage())) { 
         Log.i(TAG, "<onCancelled> error: " + databaseError.getMessage()); 
         if (!FrameworkUtils.checkIfNull(mFirebaseValueListener)) { 
          mFirebaseValueListener.onCancelled(databaseError); 
         } 
        } 
       } 
      }); 
     } 
    } 

    /** 
    * Method is used to retrieve a list of values from Firebase DB 
    */ 
    public static void retrieveValues() { 
     mDbReference.addListenerForSingleValueEvent(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       Log.i(TAG, "<onDataChange> successful!"); 
       if (!FrameworkUtils.checkIfNull(mFirebaseValueListener)) { 
        mFirebaseValueListener.onDataChange(dataSnapshot); 
       } 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 
       if (!FrameworkUtils.checkIfNull(databaseError) && !FrameworkUtils.isStringEmpty(databaseError.getMessage())) { 
        Log.i(TAG, "<onCancelled> error: " + databaseError.getMessage()); 
        if (!FrameworkUtils.checkIfNull(mFirebaseValueListener)) { 
         mFirebaseValueListener.onCancelled(databaseError); 
        } 
       } 
      } 
     }); 
    } 
} 

私はマニフェスト

<uses-permission android:name="android.permission.INTERNET" /> 

にインターネットアクセス権を持っている私はGradleの

dependencies {  
    compile 'com.google.firebase:firebase-database:10.2.1' 
} 

にすべての私の依存関係を追加したこの

// instantiate FirebaseUtils 
     new FirebaseUtils(this); 

のようにインスタンス化していますいくつかありますオンの並べ替え私が紛失しているFirebase?

答えて

0

答えを出そうとしたすべての人に感謝しますが、これらの回答は機能しませんでした。私はそれを考え出した。私がやったのはFirebaseAppをオプションで初期化することでした。

Firebaseデータベースをセットアップするためのすべての手順を完了したが、まだその不正な例外エラーが発生している場合は、FirebaseAppをオプションでインスタンス化してみてください。

まず

FirebaseOptions options = new FirebaseOptions.Builder() 
       .setApiKey("key") 
       .setDatabaseUrl("url") 
       .setApplicationId("ID") 
       .build(); 

今すぐあなたのFirebaseDatabase

FirebaseDatabase firebaseDb = FirebaseDatabase.getInstance(app); 

をインスタンスあなたができるようになり、今ではそのステップを完了したことをFirebaseApp

FirebaseApp app = FirebaseApp.initializeApp(context, options); 

をインスタンス化するためにそれを使用あなたのオプションを作成次を行うには

DatabaseReference rootRef = firebaseDb.getReference(); 
関連する問題