【问题标题】:Read and Write operation to Firebase in AndroidAndroid中对Firebase的读写操作
【发布时间】:2017-09-18 20:07:18
【问题描述】:

我正在尝试制作一个从 Firebase 读取纬度和经度并写入相同值的跟踪器应用。在 Firebase 中,我在 RootReference 之后有一个名为“Raunak Trikha”的孩子,其中有两个孩子“lat”和“long”。从这些孩子中,我想读取和写入当前位置的值。现在我已经成功地将 Firebase 集成到我的 android 项目中。我自己无法获得价值,所以请帮忙。 请尝试编辑我的代码,因为我是初学者,欢迎提出任何其他建议。她是我的代码:

MapsActivity.java `

public class MapsActivity extends AppCompatActivity implements 
OnMapReadyCallback,ValueEventListener {

private GoogleMap mMap;
private GPS_Tracker gpsTracker;
private Location mLocation;
double latitude, longitude;
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 onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_maps);

    gpsTracker = new GPS_Tracker(getApplicationContext());
    mLocation = gpsTracker.getLocation();

    latitude = mLocation.getLatitude();
    longitude = mLocation.getLongitude();

    // Obtain the SupportMapFragment and get notified when the map is ready to be used.
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
    mChildReference2.setValue(latitude);
    mChildReference3.setValue(longitude);

}

@Override
public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;

    // Add a marker in Sydney and move the camera
    mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
    LatLng sydney = new LatLng(latitude, longitude);
    //LatLng r=new LatLng(value,rlong);
    mMap.addMarker(new MarkerOptions().position(sydney).title("I'm here...").icon(BitmapDescriptorFactory.fromResource(R.mipmap.download)));
    mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
    //mMap.addMarker(new MarkerOptions().position(r).title("I'm here...").icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher)));
}

@Override
public void onDataChange(DataSnapshot dataSnapshot) {
   if(dataSnapshot.getValue(double.class)!=null){
       String key=dataSnapshot.getKey();
       if(key.equals("lat")){
           double rlat=dataSnapshot.getValue(double.class);
       }
       else if(key.equals("long")){
           double rlong=dataSnapshot.getValue(double.class);
       }
   }
    LatLng r=new LatLng(rlat,rlong);
    mMap.addMarker(new MarkerOptions().position(r).title("I'm here...").icon(BitmapDescriptorFactory.fromResource(R.mipmap.download)));
}

@Override
public void onCancelled(DatabaseError databaseError) {

}

@Override
protected void onStart(){
   super.onStart();
   mChildReference2.addValueEventListener(this);
   mChildReference3.addValueEventListener(this);
}`

【问题讨论】:

  • 您的onDataChange 是否随时会被调用?快照值是多少? (使用断点检查)
  • 是的,应用程序启动时会调用 onDataChange。快照值在此链接“imgur.com/QFu4Q0g
  • @MalikAhsan 它应该是 String.class 但是当我获取一个双精度值时,我想用双精度替换字符串
  • 好的。检查我的答案,如果有帮助,请告诉我
  • 您分享的上述链接没有您的图片。同时显示您的数据库的屏幕截图。

标签: java android google-maps firebase firebase-realtime-database


【解决方案1】:

用这个替换你的 onDataChange

 @Override
 public void onDataChange(DataSnapshot dataSnapshot) 
 {
if(dataSnapshot.getValue()!=null){
   String key=dataSnapshot.getKey();
   if(key.equals("lat")){
       String rlat=dataSnapshot.getValue();
   }
   else if(key.equals("long")){
       String rlong=dataSnapshot.getValue();
   }
  }
 LatLng r=new  
LatLng(Double.parseDouble(rlat),Double.parseDouble(rlong));
 mMap.addMarker(new 
 MarkerOptions().position(r).title("I'm 
here...") 
.icon(BitmapDescriptorFactory
.fromResource(R.mipmap.download)));
}

希望有帮助

【讨论】:

  • 这有帮助吗?
  • 不,它总是停在“FirebaseDatabase database = FirebaseDatabase.getInstance();”
  • 您的集成现在受到质疑
  • 这可能解决了问题。您是否更改了任何 Firebase 配置?您是否在应用中使用构建风格?
猜你喜欢
  • 1970-01-01
  • 2015-05-29
  • 2021-07-13
  • 1970-01-01
  • 2018-09-04
  • 2011-08-28
  • 1970-01-01
  • 2022-11-24
  • 2014-07-30
相关资源
最近更新 更多