首页 > 解决方案 > 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();
                }
            });

}

标签: androidfirebasegoogle-cloud-firestore

解决方案


Firestore 中的 Answer 参数包含一个数字而不是字符串。所以 .getString 函数是错误的。您可以使用 .getInt 或 .getLong 函数吗?

doc.getString("A"),
doc.getString("B"),
doc.getString("C"),
doc.getString("D"),
Integer.valueOf(doc.getLong("ANSWER"))

推荐阅读