【发布时间】:2017-09-22 16:40:54
【问题描述】:
我有一个测验应用程序,一旦回答了所有问题,我希望删除该片段。 questions 变量是用户定义对象的队列。
private void loadNextQuestion() {
if (QuizGameActivity.questions.isEmpty()) {
getActivity().getSupportFragmentManager().beginTransaction().remove(thisFragment).commit();
}
mCurrentQuestion = QuizGameActivity.questions.remove();
...
}
但是,如果我运行它并回答最后一个问题,我会从尝试删除队列中下一个问题的行中收到 java.util.NoSuchElementException。为什么即使队列为空,这条线也会执行?上面的 if 语句应该防止这种情况发生吗?
【问题讨论】:
-
你需要一个
else案例,你不觉得吗? -
如果队列为空,为什么还要执行此行? 因为它不在
else块中。它总是会被执行。是的,即使您删除了片段,该方法仍将继续执行:它仍然是一个方法,除非您显式返回,否则它将继续执行。 -
看起来你可能需要在你的“if”上加上一个“else”。
标签: java android android-fragments linked-list queue