2017-09-13 41 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();