2017-09-18 246 views
0

我试图使用Google Maps API和Firebase构建跟踪器应用程序。 我想在onStart()中使用getValue()方法从Firebase获取值并将它们用作经度和纬度来显示位置。我的代码:FirebaseDatabase.getInstance()崩溃应用程序

MapsActivity.java

private FirebaseDatabase firebaseDatabase=FirebaseDatabase.getInstance(); 
private DatabaseReference mRootReference =firebaseDatabase.getReference(); 
private DatabaseReference mChildReference=mRootReference.child("Raunak Trikha"); 
private DatabaseReference mChildReference1=mChildReference.child("id"); 
private DatabaseReference mChildReference2=mChildReference1.child("lat"); 
private DatabaseReference mChildReference3=mChildReference1.child("long"); 

@Override 
protected void onStart(){ 
    super.onStart(); 
    mChildReference2.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      rlat=dataSnapshot.getValue(double.class); 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

}` 

每当我尝试运行这个程序在我的AVD崩溃。

+0

'“Raunak Trikha”'不应该是一个关键。键不应包含空格。 –

+1

但是我们仍然需要查看错误的堆栈跟踪以了解真正的问题。 –

+0

“Raunak Trikha”是根的第一个孩子。无论如何,该应用程序在此声明崩溃:'私人FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();' –

回答

0

你必须调用

FirebaseApp.initializeApp(getApplicationContext()); 

线,当你的应用程序启动?

onCreate()第一个活动或应用程序类的方法。

+0

这可能是实际的解决方案,但你说它像一个评论。 –

+0

请说明我需要在哪里添加此代码。 –

+0

在您的第一个活动或应用程序类的onCreate()方法。 – nsevim

0

为了简化代码,请使用以下行:需要在onCreate()方法

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference latRef = rootRef.child("Raunak Trikha").child("id").child("lat"); 
DatabaseReference longRef = rootRef.child("Raunak Trikha").child("id").child("long"); 
latRef.addListenerForSingleValueEvent(/* ... */); 
longRef.addListenerForSingleValueEvent(/* ... */); 

这一切都行。