У меня есть файл questions.xml со списком вопросов для моей викторины, и я пытаюсь зачитать это в банк вопросов в моей программе. Я написал следующий метод:
// Creates the QuestionBank according to user requirements
public ArrayList<Question> createQuestionBank(String diff) {
int eventType = -1;
boolean FoundQuestions = false;
QuestionBank = new ArrayList<Question>();
// Find Question records from XML
System.out.println("check 1");
while (eventType != XmlResourceParser.END_DOCUMENT) { // Keep reading until the end of the xml file
System.out.println("check 2");
if (eventType == XmlResourceParser.START_TAG) {
System.out.println("check 3");
String Name = questionList.getName();
if (Name.equals("question")){ // Check whether the tag found is the one for question
System.out.println("check 4");
// Check difficulty of question
String diffCheck = questionList.getAttributeValue(null, "difficulty");
if (diff.equals("Any") || diff.equals(diffCheck)){
FoundQuestions = true;
System.out.println("check 5");
createandaddquestion();
System.out.println("check 6");
}
}
try {
eventType = questionList.next();
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return QuestionBank;
}
Я установил несколько выходных операторов, чтобы определить, где моя программа работала неправильно. Метод выводит бесконечный цикл check2 и никогда не переходит к проверке 3, поэтому застревает в операторе:
if (eventType == XmlResourceParser.START_TAG)
Я адаптировал некоторый код, который нашел в другом месте, и не совсем понимаю, что происходит. Насколько я понимаю, это утверждение находит начальную часть тега, который я затем выполняю, чтобы проверить, является ли это тегом вопроса, который обозначает начало моей записи вопроса; что же такое eventType? Очевидно, что это целое число, но почему XMLResourceParser.START_TAG возвращает целое число при обнаружении тега? Конечно, было бы больше смысла быть логическим? Из приведенного выше поста я не думаю, что мне нужно подчеркивать, что я новичок в Android, поэтому, пожалуйста, будьте терпеливы! Заранее спасибо.