Java 如何在Firebase Android Studio中获取3个数据中的1个数据
我在firebase中有3个ID不同的数据 例如:Java 如何在Firebase Android Studio中获取3个数据中的1个数据,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我在firebase中有3个ID不同的数据 例如: Data : - ABC Lat: 12345 Lng: 23124 - DEF Lat: 23324 Lng: 43553 - GHI Lat: 23424 Lng: 12343 如何从IDABC中获取12345的Lat,我希望我可以用Toast trigger by Button显示它。从快照中,您必须获取您的孩子和元素,如下所示: private Fireba
Data :
- ABC
Lat: 12345
Lng: 23124
- DEF
Lat: 23324
Lng: 43553
- GHI
Lat: 23424
Lng: 12343
如何从ID
ABC
中获取12345的Lat
,我希望我可以用Toast trigger by Button显示它。从快照中,您必须获取您的孩子和元素,如下所示:
private FirebaseDatabase database = FirebaseDatabase.getInstance();
private final DatabaseReference myRef = database.getReference("Data"); //Init your ref at Data
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String lat = messageSnapshot.child("ABC").child("Lat").getValue().toString(); //acces to ABC => Lat
Toast.makeText(getApplicationContext(), "Lat: " + lat, Toast.LENGTH_SHORT).show() //print here
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
若要发送包含
lat
值的邮件,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference abcRef = rootRef.child("Data").child("ABC");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
double lat = dataSnapshot.child("Lat").getValue(Double.class);
Toast.makeText(getApplicationContext(), "Lat: " + lat, Toast.LENGTH_SHORT).show()
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
abcRef.addListenerForSingleValueEvent(valueEventListener);
输出将是:
12345
您将以json格式获取此数据,然后进行比较以获取Lat或Lng?Lat和Lng正常,只有一个。@noogui请阅读数据库
。getreferences已更新我忘记了数据库的实例;)@husenmessageSnapsot
是红色的,我的坏啊哈。您可以随时将addValueListener放入onClickListener;)@husensame就像上面的答案一样,我得到了crash to我可以把ValueEventListner放在按钮里面吗?setOnClickListner
?我试图把它,但我的应用程序停止工作。是的,你可以。由于出现错误,它停止工作。这是什么错误?单击按钮时没有错误,应用程序停止工作如果出现崩溃(应用程序停止工作),则表示logcat中存在异常。什么是例外?是用红色写的。一切都好吗?你解决问题了吗?