2017-09-13 116 views
0

我試圖用火力地堡數據庫,但現在面臨非法狀態異常非法狀態異常火力地堡數據庫

默認FirebaseApp沒有在這個過程中com。示例初始化。 請確保先調用FirebaseApp.initializeApp(Context)。

我創建了一個Utility類,可以從任何地方實例化。我在Application和Activity(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); 
        } 
       } 
      } 
     }); 
    } 
} 

我實例化這樣

// instantiate FirebaseUtils 
     new FirebaseUtils(this); 

我在gradle這個加了我所有的依賴

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

我在清單

上網權限
<uses-permission android:name="android.permission.INTERNET" /> 

有一些安裝的種類我失蹤的Firebase?

回答

0

感謝大家試圖給出答案,但這些答案無效。我想到了。我所做的是使用選項初始化FirebaseApp。

如果其他人已經完成了設置Firebase數據庫的所有步驟,但仍然收到該非法異常錯誤,則可能需要嘗試使用選項實例化FirebaseApp。

首先創建你的選擇

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

現在用它來實例化FirebaseApp

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

現在你已經完成了這一步,實例化FirebaseDatabase

FirebaseDatabase firebaseDb = FirebaseDatabase.getInstance(app); 

您將能夠做下列事情

DatabaseReference rootRef = firebaseDb.getReference();