Android 当实时数据库(firebase)应用程序中的数据发生更改时崩溃
这不仅仅与这些数据有关,错误与这些数据相同 当我将其他设备的数据保存到数据库中时,firebase应用程序崩溃,数据被检索并设置到其他设备的循环视图中 onDataChange是实时的,当数据发生更改时,会自动调用它 通知类Android 当实时数据库(firebase)应用程序中的数据发生更改时崩溃,android,firebase-realtime-database,Android,Firebase Realtime Database,这不仅仅与这些数据有关,错误与这些数据相同 当我将其他设备的数据保存到数据库中时,firebase应用程序崩溃,数据被检索并设置到其他设备的循环视图中 onDataChange是实时的,当数据发生更改时,会自动调用它 通知类 public class Notifications { private String Name; private String Email; private String Message; private String Time;
public class Notifications {
private String Name;
private String Email;
private String Message;
private String Time;
private String Date;
public Notifications() {
}
public Notifications(String Name, String Email, String Message, String Time, String Date) {
this.Name = Name;
this.Email = Email;
this.Message = Message;
this.Time = Time;
this.Date = Date;
}
public String getName() {
return Name;
}
public String getEmail() {
return Email;
}
public String getMessage() {
return Message;
}
public String getTime() {
return Time;
}
public String getDate() {
return Date;
}
}
显示此错误
com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.Boolean to type com.example.simpleapplocker.Notifications
排队
notificationList.add(notifications);
“启动后”检索该数据并显示在“循环”视图中
这意味着数据存在或可能创建了通知,但其他数据未上载,此函数称为maybe
Notifications notifications = userSnapshot.getValue(Notifications.class);
在这一行中,您将看到一个错误,即布尔对象无法转换为通知。如果已将该子级的值设置为true或false(不带双引号),则可能会出现这种情况。再次查看,并尝试在要设置为子值的true或false周围添加双引号。尝试此方法,它对我有效
然后它将如何获取存在于该方法中的所有通知的数据,并让我知道它是否有效。此方法仅在应用程序启动时调用。请添加您的数据库结构,并请响应我刚才添加的图像,您可以选中Use Firebase Recycleradapter@MuhammadOwaisChaudharysir首先检查通知模型类属性数据类型。并检查您的数据更改响应。根据您的请求,我现在会要求您将数据库结构添加为JSON文件或至少作为屏幕截图。请同时回复@AlexMamo@AlexMamo感谢来到这里,我刚刚在这里添加了图像,实际上,当任何通知子项发生更改时,它工作正常,但当添加新的子项时,它会崩溃。还有一个函数setOnAddChildren,但它不会检索所有子项notifications@HasnainSabir我刚刚用你们的图片更新了这个问题可以看看有没有布尔值value@MuhammadOwaisChaudhary还请添加通知类的内容。
Notifications notifications = userSnapshot.getValue(Notifications.class);
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("Notification");
myRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
if(dataSnapshot.exist()) {
Notifications notifications = userSnapshot.getValue(Notifications.class);
notificationList.add(notifications);
}
Collections.reverse(notificationList);
mAdapter = new
Adapter_Notification(notificationList);
mRecyclerView.addItemDecoration(new DividerItemDecoration(getContext(), LinearLayoutManager.VERTICAL));
mRecyclerView.setAdapter(mAdapter);
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});