java - android studio的以下代码中的错误是什么
问题描述
我程序的这一部分是将当前时间添加到我的云存储中。该应用程序的工作原理是程序的这一部分。每当我尝试运行这部分程序时,应用程序都会停止运行,并且我的数据库中没有任何变化。
mreport.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
String tower = mtower.getSelectedItem().toString();
String currentTime = new SimpleDateFormat("HH:mm:ss", Locale.getDefault()).format(new Date());
String currentDate = new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault()).format(new Date());
CollectionReference dbr = db.collection("tower")
.document(tower).collection(currentDate)
.document("duty").collection("off");
dbr.add(currentTime)
.addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
@Override
public void onSuccess(DocumentReference documentReference) {
Toast.makeText(MainActivity.this,"REPORTED SUCCESSFULLY" , Toast.LENGTH_SHORT).show();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(MainActivity.this, "EORROR!",Toast.LENGTH_SHORT).show();
}
});
}
});
E/Surface: getSlotFromBufferLocked: unknown buffer: 0x7f1108012880 D/OpenGLRenderer: endAllStagingAnimators on 0x7f10fc596c00 (DropDownListView) with handle 0x7f110b0fcce0 D/EGL_emulation: eglMakeCurrent: 0x7f10fd15db60: ver 3 1 (tinfo 0x7f11078e2ba0) D/AndroidRuntime: Shutting down VM E/AndroidRuntime: FATAL例外:主进程:com.example.guardchecker,PID:3684 java.lang.IllegalArgumentException:无效数据。数据必须是 Map 或合适的 POJO 对象,但它的类型为:com.google.firebase.firestore.UserDataReader.convertAndParseDocumentData(com.google.firebase:firebase-firestore@@21.4.1: 234) 在 com.google.firebase.firestore.UserDataReader.parseSetData(com.google.firebase:firebase-firestore@@21.4.1:75) 在 com.google.firebase.firestore.DocumentReference.set(com.google.firebase :
解决方案
Firestore 是一个集合/文档数据库,您只能将值存储在文档的字段中。问题是您尝试在 Cloud Firestore 文档中存储单个值,但文档必须始终具有键值对。
因此,您需要确定要将 currentTime 存储在哪个字段中,然后传递一个键值对。例如
Map<String, Object> values = new HashMap<>();
values.put("time", currentTime);
dbr.add(values);
在上面的片段中,您将看到我们将您要存储的值与键一起放入映射中time
,然后将该键值对存储在数据库中。
推荐阅读
- java - 在graphql java工具spring boot中禁用自省查询
- angular - 在 Angular 中显示 3 位小数的整数
- elasticsearch - 术语不存在查询如何在 lucene 中工作?
- python - “货币”对象没有“转换”属性
- django - 如何在 django 中检索不同类型的数据?
- r - 如何将 rasterize() 代码转换为 R 中的 gdal_rasterize() 以根据每个单元格中的计数栅格化 OSM 数据源的点层?
- callback - 如何存储和访问字符串 dcc.Input 以加载新模型并使用图形、下拉列表等更新现有用户界面...?
- laravel - 带有 JavaScript 的 laravel 路由辅助参数
- python - 无法让 functionapp create 在 Azure 上与 Python 一起使用
- flutter - 如何在我的 Flutter 应用程序的某些屏幕中保持底部导航栏的持久性