android - java.lang.RuntimeException:字段 'ANSWER' 不是 java.lang.String
问题描述
我正在从 firestore 访问数据,但它无法访问,Integer.valueOf(doc.getString("ANSWER"))
因为它给了我例外
java.lang.RuntimeException:字段 'ANSWER' 不是 java.lang.String
我不知道我的错误在哪里我将字段 ANSWER 转换为数字但它不能访问。
这是我的这种方法的代码
private void getQuestionList() {
questionList = new ArrayList<>();
firestore.collection("QUIZ").document("CAT" + String.valueOf(category_ID))
.collection("SET" + String.valueOf(setNo)).get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
QuerySnapshot questions = task.getResult();
for (QueryDocumentSnapshot doc: questions){
questionList.add(new Question(doc.getString("QUESTION"),
doc.getString("A"),
doc.getString("B"),
doc.getString("C"),
doc.getString("D"),
Integer.valueOf(doc.getString("ANSWER"))
));
}
setQuestion();
}
else {
Toast.makeText(QuestionsActivity.this, Objects.requireNonNull(task.getException()).getMessage(), Toast.LENGTH_SHORT).show();
}
loadingDialog.cancel();
}
});
}
解决方案
Firestore 中的 Answer 参数包含一个数字而不是字符串。所以 .getString 函数是错误的。您可以使用 .getInt 或 .getLong 函数吗?
doc.getString("A"),
doc.getString("B"),
doc.getString("C"),
doc.getString("D"),
Integer.valueOf(doc.getLong("ANSWER"))
推荐阅读
- java - 如何将 MainView 注册到另一个 View 触发的 ComponentEvent?
- javascript - JavaScript:如何使用相同的脚本在一个页面上添加多个图像滑块?
- terraform - 在terraform中使用list和for_each时如何定义输出列表
- nativescript - 为什么 NativeScript 的默认构建会生成 18mb 的组合 apk
- php - 我怎样才能把它放在一个for循环中?
- r - 如何根据R中的列相交数据框
- c++ - 使用 Lambda 表达式的 C++ 中的多线程
- swift - 在 xcode 11.3 视图控制器中崩溃变得为零
- rust - StructOpt:如何将所有参数组合在一个字符串中?
- android - 使用电容器在真正的 android 设备上运行 Ionic 5 应用程序