У цій лабораторній роботі ми візьмемося за представлення деталізації CriminalIntent. На мал. 7.4 показано, як виглядатиме додаток CriminalIntent до кінця лабораторної роботи.
Мал. 7.4. Додаток CriminalIntent до кінця лабораторної роботи
На перший погляд результат не вражає. Проте не забувайте, що ця лабораторна робота усього лише закладає основу для серйозніших справ в майбутньому.
Екраном, показаним на мал. 7.4, управлятиме UI- фрагмент з ім'ям Crime-Fragment. Хостом(host) екземпляра CrimeFragment є активність з ім'ям
CrimeActivity.
Поки вважайте, що хост надає позицію в ієрархії представлень, в якій фрагмент може розмістити своє представлення(мал. 7.5). Фрагмент не може
вивести представлення на екран сам по собі. Його представлення відображається тільки при розміщенні в ієрархії активності.
Мал. 7.5. CrimeActivity як хост CrimeFragment
Проект CriminalIntent буде великим; діаграма об'єктів допоможе зрозуміти логіку його роботи. На мал. 7.6 зображена загальна структура CriminalIntent. Запам'ятовувати усі об'єкти і зв'язки між ними не обов'язково, але перш ніж виходити в дорогу, корисно хоч би у загальних рисах розуміти, куди ви прямуєте.
Ми бачимо, що клас CrimeFragment робить приблизно те ж, що в GeoQuiz робили активності : він створює призначений для користувача інтерфейс і управляє з ним, а також забезпечує взаємодію з об'єктами моделі.
Модель
Контроллер
Представле-ние(макет)
Мал. 7.6. Діаграма об'єктів CriminalIntent
Ми напишемо три класи, зображених на мал. 7.6: Crime, CrimeFragment і Crime - Activity.
Екземпляр Crime представляє один офісний злочин. У лабораторній роботі опис злочину складатиметься тільки із заголовка і ідентифікатора. Заголовок містить змістовний текст(наприклад, «Звалище хімічних відходів в раковині» або «Хтось вкрав мій йогурт»!), а ідентифікатор однозначно ідентифікує екземпляр Crime.
У лабораторній роботі ми для простоти використовуватимемо один екземпляр Crime. У клас CrimeFragment включається поле(mCrime) для зберігання цього окремого інциденту.
Представлення CrimeActivity складається з елементу FrameLayout, що визначає місце, в якому відображатиметься представлення CrimeFragment.
Представлення CrimeFragment складатиметься з елементів LinearLayout і EditText. CrimeFragment визначає поле для віджета EditText(mTitleField) і призначає для нього слухача, оновлюючого рівень моделі при зміні тексту.