Оновлення рівня контроллера
У попередній главі в єдиному контроллері GeoQuiz — QuizActivity — не відбувалося майже нічого. Він відображав макет, визначений у файлі activity _ quiz. xml, призначав слухачів для двох кнопок і організовував видачу повідомлень.
Тепер, коли у нас з'явилися додаткові питання, класу QuizActivity доведеться докласти додаткові зусилля для зв'язування рівнів моделі і представлення GeoQuiz. Відкрийте файл QuizActivity.java. Додайте змінні для TextView і нової кнопки Button. Також створіть масив об'єктів TrueFalse і змінну для індексу масиву.
Лістинг 2.6. Додавання змінних і масиву TrueFalse
Програма кілька разів викликає конструктор TrueFalse і створює масив об'єктів TrueFalse.
(У складнішому проекті цей масив створювався б і зберігався у іншому місці. Пізніше ми розглянемо правильніші варіанти зберігання даних моделі. А доки для простоти масив створюватиметься в контроллері.)
Ми збираємося використати mQuestionBank, mCurrentIndex і методи доступу TrueFalse для виведення на екран серії питань. Розпочнемо з отримання посилання на TextView і завдання тексту віджета питання з поточним індексом.
Лістинг 2.7. Підключення віджета TextView(QuizActivity.java)
Збережіть файли і перевірте можливі помилки. Запустіть програму GeoQuiz. Перше питання з масиву повинне відображатися у віджете TextView. Тепер розберемося з кнопкою Next. Отримайте посилання на кнопку, призначте їй слухача View.OnClickListener. Цей слухач збільшуватиме індекс і оновлюватиме текст TextView.
Листинг 2.8.Подключение новой кнопки(QuizActivity.java)
Запустіть GeoQuiz і протестуйте нову кнопку Next.
Итак, з питаннями ми розібралися — пора звернутися до відповідей. І знову ми реалізуємо закритий метод для інкапсуляції коду замість того, щоб вставляти однаковий код в двох місцях.
Сигнатура методу, який буде доданий в QuizActivity, виглядає так: private void checkAnswer(boolean userPressedTrue)
Метод отримує логічну змінну, яка вказує, яку кнопку натиснув користувач: True або False. Відповідь користувача перевіряється по відповіді поточного об'єкту TrueFalse. Нарешті, після визначення правильності відповіді метод створює повідомлення для виведення відповідного повідомлення. Включіть у файл QuizActivity.java реалізацію checkAnswer(boolean), приведену в лістингу 2.10. Лістинг 2.10. Додавання методу checkAnswer(boolean) (QuizActivity.java) ...
public class QuizActivity extends Activity {
Програма GeoQuiz знову готова до роботи. Давайте запустимо її на реальному пристрої.
Запуск на пристрої
У цьому розділі ми займемося налаштуванням системи, пристрої і додатки для виконання GeoQuiz на фізичному пристрої.
©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.
|