diff --git a/README.md b/README.md index 793363c..19d9547 100644 --- a/README.md +++ b/README.md @@ -7,23 +7,22 @@ Основные требования к приложению: - Не изменяйте место и название файла `MainActivity` (но редактирование содержимого - можно и нужно) -- Для отслеживания используйте текстовые подсказки системного класса `Toast` +- Последовательность состояния жизненого цикла приложения должна выводиться в *TextView* (`@id/protocol`) +- Каждое состояние жизненного цикла выводится в отдельной строке - Значения текстовых подсказок **должны быть определены** в строковых ресурсах `string.xml` -- Длительность показа задается константой `Toast.LENGTH_LONG` -- В качестве объекта `Context` используйте запускаемую активити - Текстовые подсказки должны быть корректно выводится при смене конфигурации приложения (например, поворот экрана) Название строковых ресурсов и их значения приведено в таблице 1. | № | Отслеживаемый метод | Строковый ресурс | Значение ресурса | -| :-: | :-----------------: | :--------------: | :--------------: | -| 1 | `onCreate` | `ncreate` | Activity CREATED | -| 2 | `onStart` | `nstart` | Activity STARTED | -| 3 | `onResume` | `nresume` | Activity RESUMED | -| 4 | … | `npause` | Activity PAUSED | -| 5 | … | `nstop` | Activity STOPPED | -| 6 | … | `nrestart` | Activity RESTARTED | -| 7 | `onDestroy` | `ndestroy` | Activity DESTROYED | +| :-: |:-------------------:| :--------------: | :--------------: | +| 1 | `onCreate` | `ncreate` | Activity CREATED | +| 2 | `onStart` | `nstart` | Activity STARTED | +| 3 | `onResume` | `nresume` | Activity RESUMED | +| 4 | `onPase` | `npause` | Activity PAUSED | +| 5 | `onStop` | `nstop` | Activity STOPPED | +| 6 | `onRestart` | `nrestart` | Activity RESTARTED | +| 7 | `onDestroy` | `ndestroy` | Activity DESTROYED | *Таблица 1. Настройки всплывающих подсказок* @@ -35,34 +34,18 @@ *Ожидаемый результат:* -Последовательно показаны текстовые подсказки: +*TextView* (`@id/protocol`) содержит три строки: -1. `onCreate` -2. `onStart` -3. `onResume` +Activity CREATED -**2. Поворот экрана** +Activity STARTED -*Входные данные:* приложение уже запущено. Выполняется поворот экрана. - -*Ожидаемый результат:* - -Последовательно показаны текстовые подсказки: - -1. `onDestroy` -2. `onCreate` -3. `onStart` -4. `onResume` - -![screenshot](/doc/screenshot.png) - -*Пример интефрейса* +Activity RESUMED +![Пример оформления](/doc/screenshot.png) | № | Название теста | Баллы | Описание | | :-: | :-----------------: | :--------------: | :-------------- | | 1 | checkPortait | 2 | Проверка последовательности Toast при запуске активности | | 2 | checkLandscape | 4 | Проверка обработки поворотов экрана | -| 3 | checkStringRes | 1 | Проверка наличия строковых ресурсов | - *Таблица 2. Критерии оценивания и тесты* \ No newline at end of file diff --git a/app/src/main/java/ru/myitschool/work/MainActivity.java b/app/src/main/java/ru/myitschool/work/MainActivity.java index 1163082..7384b72 100644 --- a/app/src/main/java/ru/myitschool/work/MainActivity.java +++ b/app/src/main/java/ru/myitschool/work/MainActivity.java @@ -1,20 +1,42 @@ package ru.myitschool.work; import android.os.Bundle; +import android.text.method.ScrollingMovementMethod; import android.widget.Toast; import androidx.annotation.Nullable; +import androidx.annotation.StringRes; import androidx.appcompat.app.AppCompatActivity; +import java.util.ArrayList; + import ru.myitschool.work.databinding.ActivityMainBinding; public class MainActivity extends AppCompatActivity { + + private ActivityMainBinding binding; + private ArrayList protocol = new ArrayList<>(); + + + void logLifecycleState(@StringRes int resourceId) { + String text = getString(resourceId); + protocol.add(text); + } + + void showLog() { + StringBuilder s = new StringBuilder(); + for (String state : protocol) { + s.append(state).append("\n"); + } + binding.protocol.setText(s.toString()); + } + @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); - final ActivityMainBinding binding = ActivityMainBinding.inflate(getLayoutInflater()); + binding = ActivityMainBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); - Toast.makeText(this, R.string.ncreate, Toast.LENGTH_LONG).show(); + binding.protocol.setMovementMethod(new ScrollingMovementMethod()); } // Добавьте недостающие методы здесь diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 54537fa..43c6f86 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,13 +1,22 @@ - + android:layout_height="match_parent" + tools:context=".MainActivity"> - - \ No newline at end of file + android:id="@+id/protocol" + android:layout_width="0dp" + android:layout_height="0dp" + android:scrollbars="vertical" + android:text="Протокол\n" + android:textAlignment="center" + android:textSize="34sp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + \ No newline at end of file diff --git a/doc/screenshot.png b/doc/screenshot.png index b1a37d7..7061865 100644 Binary files a/doc/screenshot.png and b/doc/screenshot.png differ