【发布时间】:2018-01-05 09:32:02
【问题描述】:
firebase_dynamicview() 该方法只被调用一次,但查询执行了两次。所以在这种情况下,我的 Activity 可以创建两次帮助我。
Log.d("gettingcall","2222222222 "); 正在打印此日志 两次
private void firebase_dynamicview() {
shared_menueditor.clear().commit();
shared_menueditor.putString("success", "failure");
shared_menueditor.apply();
shared_menueditor.commit();
Log.d("gettingcall","11111111111 ");
db = FirebaseFirestore.getInstance();
Query query = db.collection("employees");
registration= query.whereEqualTo("UID", sharedPref.getString("userId",null)).addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(QuerySnapshot documentSnapshots, FirebaseFirestoreException e) {
if (e != null) {
}
if (documentSnapshots.isEmpty()){
closeSplash();
}
Log.d("gettingcall","2222222222 ");
for (DocumentChange documentChange : documentSnapshots.getDocumentChanges()) {
Map<String, Object> forms =null;
if (documentChange.getDocument().getData().get("mobileMenu") != null) {
try
forms= (Map<String, Object>)documentChange.getDocument().getData().get("mobileMenu");
} catch (Exception e1) {
Log.e("Execeptionmenus","** "+e1.toString());
e1.printStackTrace();
}
}
if (forms!= null) {
for (Map.Entry<String, Object> form : forms.entrySet()) {
String key = form.getKey();
if (key.contains("Attendance")) {
String keys = form.getKey();
Log.d("PrintisAttendance","**** "+forms.get(keys));
shared_menueditor.putString("isAttendance",""+forms.get(keys));
}if (key.contains("Calender")){
String keys = form.getKey();
shared_menueditor.putString("Calender",""+forms.get(keys));
}
if (key.contains("Expenses")){
String keys = form.getKey();
shared_menueditor.putString("Expenses",""+forms.get(keys));
}if (key.contains("Leaves")){
String keys = form.getKey();
shared_menueditor.putString("Leaves",""+forms.get(keys));
}if (key.contains("LogOut")){
String keys = form.getKey();
shared_menueditor.putString("LogOut",""+forms.get(keys));
}if (key.contains("NoticeBoard")){
String keys = form.getKey();
shared_menueditor.putString("NoticeBoard",""+forms.get(keys));
}if (key.contains("Tasks")){
String keys = form.getKey();
shared_menueditor.putString("Tasks",""+forms.get(keys));
}if(key.contains("TrackEmployee")){
String keys = form.getKey();
shared_menueditor.putString("TrackEmployee",""+forms.get(keys));
}
if (key.contains("Form")) {
Map<Object, Object> values = (Map<Object, Object>) form.getValue();
name = (String) values.get("wName");
String id = (String) values.get("WID");
if (key.contains("Form1")) {
editor.putString("nav_form1", name);
editor.putString("formId1",id);
}
if (key.contains("Form2")) {
editor.putString("nav_form2", name);
editor.putString("formId2",id);
}
if (key.contains("Form3")) {
editor.putString("nav_form3", name);
editor.putString("formId3",id);
}
}
}
}
}
shared_menueditor.apply();
shared_menueditor.commit();
editor.apply();
editor.commit();
Log.d("calllliiiiiiing******","spalsh");
userprofile();
}
});
}
【问题讨论】:
-
@Frank van Puffelen 先生,您能检查一下吗...
-
当您调用
addSnapshotListener()时,它会为初始数据以及对该数据的后续更新附加一个侦听器。如果您只想获取一次数据,则应改为调用get()。 -
@FrankvanPuffelen 它正在工作,谢谢您
标签: java android firebase google-cloud-firestore