gpt4 book ai didi

android - 如果 firebase url 不存在并且我们尝试向其添加监听器,会发生什么情况?

转载 作者:行者123 更新时间:2023-11-29 14:36:45 25 4
gpt4 key购买 nike

我正在开发一个应用程序,我在其中要求用户输入城市和州名称并返回该地点的特定位置。但问题是,如果我的 Firebase 中不存在指定的州或城市,那么我应该在监听器触发时关闭的进度对话框会继续移动,并且不会进一步触发任何操作。

这是我的那部分代码:

//state = 从用户获取//city = 从用户处获取


mapProgress.show();<p></p>

<p>firebase.child("markers").child(state).child(city).addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(final DataSnapshot dataSnapshot, String s) {
mapProgress.dismiss();</p>

if (dataSnapshot.exists()) {
//do something
}
else
Toast.makeText(MainActivity.this, "No data found!", Toast.LENGTH_SHORT).show();
}

@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {

}

@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {

}

@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {

}

@Override
public void onCancelled(FirebaseError firebaseError) {
mapProgress.dismiss();
Toast.makeText(MainActivity.this, "Cancelled.", Toast.LENGTH_SHORT).show();
}
});
}`

最佳答案

ChildEventListener 中的方法在添加、更改、删​​除或移动子项时被调用。在空位置上,这些事件都不会发生,因此不会调用任何方法。

如果某个位置不存在值,将使用空值调用 ValueEventListener。因此,如果您还调用 addListenerForSingleValueEvent(),您可以检测到该位置没有值:

Firebase cityRef = firebase.child("markers").child(state).child(city);
cityRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
if (snapshot.getValue() == null) {
System.out.println("No data exists for "+city);
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});

如果你想在同一个调用中处理子项,你可以在 onDataChange() 中循环遍历它们:

public void onDataChange(DataSnapshot snapshot) {
if (snapshot.getValue() == null) {
System.out.println("No data exists for "+city);
}
else {
for (DataSnapshot citySnapshot: snapshot.getChildren()) {
// Do something with citySnapshot.getValue()
}
}
}

关于android - 如果 firebase url 不存在并且我们尝试向其添加监听器,会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34460779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com