【发布时间】:2019-08-27 15:07:44
【问题描述】:
我正在使用 Kotlin 编写一个 Android 应用程序,但在将文档添加到 Cloud Firestore 时遇到了问题。 在 android studio AVD Emulator 中测试应用程序时,它运行良好并按预期保存,但是当我从手机测试时,在测试模式下从 Google Play 商店安装应用程序时,它会将地图的字段名称更改为字母。
我正在 kotlin 中创建一个 hashMap,如下所示:
val mapeamento: HashMap<String, Any?> = hashMapOf(
"user_id" to userId,
"data" to data,
"hora" to hora,
"local" to mapLocais,
"sinal" to mapSinais,
"companhia" to mapCompanhias,
"contexto" to contexto,
"soma" to mapSoma,
"energossoma" to mapEnergossoma,
"psicossoma" to mapPsicossoma,
"mentalsoma" to mentalsoma,
"hipotese" to mapHipotese,
"informacoes" to mapInformacoes,
"sincronicidades" to mapSincronicidades,
"categoria" to mapCategoria,
"hipotese_comprovada" to hipoteseComprovada,
"explicacao_comprovacao" to explicacaoComprovacao
)
并以这种方式添加到 Cloud Firestore:
dbMapeamentoUser.add(mapeamento)
.addOnSuccessListener { documentReference ->
Log.d(TAG, "Mapeamento DocumentSnapshot added with ID: ${documentReference.id}")
Toast.makeText(this@CadastroMapeamentoActivity, "Mapeamento adicionado!", Toast.LENGTH_LONG).show()
dbMapeamentoUser.addSnapshotListener { documentSnapshot, firebaseFirestoreException ->
// do nothing, just to make sure server will update local cache
}
finish()
}
.addOnFailureListener { e ->
Log.w(TAG, "Error adding Mapeamento document", e)
Toast.makeText(this@CadastroMapeamentoActivity, "Erro ao tentar adicionar o mapeamento: ${e.message}", Toast.LENGTH_LONG).show()
}
问题是,当我从 android studio AVD Emulator 添加一个新文档时,它正确如下:
但是,当我从 beta 测试中安装在手机上的应用程序中添加时,它会将字段名称更改为字母:
我找不到任何可能有同样问题的人,这就是我提出这个问题的原因。
有什么想法吗?
【问题讨论】:
-
不要描述你的数据库的样子,而是添加它的截图。
-
完成,@AlexMamo
-
您是否从不同位置向数据库添加数据?如果是,请将其添加到您的问题中。除此之外,
mapeamento是如何定义的? -
“不同位置”是什么意思?关于mapeamento定义你想知道它的变量类型吗?你的数据类?
-
这个问题似乎与在 firebase 将对象数组转换为地图数组有关,并且应用程序是否被缩小。显然,当缩小时,它失去了正确和隐式转换地图中对象的能力。不知道为什么。
标签: android kotlin hashmap google-cloud-firestore