Update task to TextView protocol

This commit is contained in:
Андрей II Лимасов 2024-11-14 08:08:21 +03:00
parent e9f21ae2ba
commit 6af06fa8c9
4 changed files with 57 additions and 43 deletions

View File

@ -7,23 +7,22 @@
Основные требования к приложению: Основные требования к приложению:
- Не изменяйте место и название файла `MainActivity` (но редактирование содержимого - можно и нужно) - Не изменяйте место и название файла `MainActivity` (но редактирование содержимого - можно и нужно)
- Для отслеживания используйте текстовые подсказки системного класса `Toast` - Последовательность состояния жизненого цикла приложения должна выводиться в *TextView* (`@id/protocol`)
- Каждое состояние жизненного цикла выводится в отдельной строке
- Значения текстовых подсказок **должны быть определены** в строковых ресурсах `string.xml` - Значения текстовых подсказок **должны быть определены** в строковых ресурсах `string.xml`
- Длительность показа задается константой `Toast.LENGTH_LONG`
- В качестве объекта `Context` используйте запускаемую активити
- Текстовые подсказки должны быть корректно выводится при смене конфигурации приложения (например, поворот экрана) - Текстовые подсказки должны быть корректно выводится при смене конфигурации приложения (например, поворот экрана)
Название строковых ресурсов и их значения приведено в таблице 1. Название строковых ресурсов и их значения приведено в таблице 1.
| № | Отслеживаемый метод | Строковый ресурс | Значение ресурса | | № | Отслеживаемый метод | Строковый ресурс | Значение ресурса |
| :-: | :-----------------: | :--------------: | :--------------: | | :-: |:-------------------:| :--------------: | :--------------: |
| 1 | `onCreate` | `ncreate` | Activity CREATED | | 1 | `onCreate` | `ncreate` | Activity CREATED |
| 2 | `onStart` | `nstart` | Activity STARTED | | 2 | `onStart` | `nstart` | Activity STARTED |
| 3 | `onResume` | `nresume` | Activity RESUMED | | 3 | `onResume` | `nresume` | Activity RESUMED |
| 4 | | `npause` | Activity PAUSED | | 4 | `onPase` | `npause` | Activity PAUSED |
| 5 | | `nstop` | Activity STOPPED | | 5 | `onStop` | `nstop` | Activity STOPPED |
| 6 | | `nrestart` | Activity RESTARTED | | 6 | `onRestart` | `nrestart` | Activity RESTARTED |
| 7 | `onDestroy` | `ndestroy` | Activity DESTROYED | | 7 | `onDestroy` | `ndestroy` | Activity DESTROYED |
*Таблица 1. Настройки всплывающих подсказок* *Таблица 1. Настройки всплывающих подсказок*
@ -35,34 +34,18 @@
*Ожидаемый результат:* *Ожидаемый результат:*
Последовательно показаны текстовые подсказки: *TextView* (`@id/protocol`) содержит три строки:
1. `onCreate` Activity CREATED
2. `onStart`
3. `onResume`
**2. Поворот экрана** Activity STARTED
*Входные данные:* приложение уже запущено. Выполняется поворот экрана. Activity RESUMED
*Ожидаемый результат:*
Последовательно показаны текстовые подсказки:
1. `onDestroy`
2. `onCreate`
3. `onStart`
4. `onResume`
![screenshot](/doc/screenshot.png)
*Пример интефрейса*
![Пример оформления](/doc/screenshot.png)
| № | Название теста | Баллы | Описание | | № | Название теста | Баллы | Описание |
| :-: | :-----------------: | :--------------: | :-------------- | | :-: | :-----------------: | :--------------: | :-------------- |
| 1 | checkPortait | 2 | Проверка последовательности Toast при запуске активности | | 1 | checkPortait | 2 | Проверка последовательности Toast при запуске активности |
| 2 | checkLandscape | 4 | Проверка обработки поворотов экрана | | 2 | checkLandscape | 4 | Проверка обработки поворотов экрана |
| 3 | checkStringRes | 1 | Проверка наличия строковых ресурсов |
*Таблица 2. Критерии оценивания и тесты* *Таблица 2. Критерии оценивания и тесты*

View File

@ -1,20 +1,42 @@
package ru.myitschool.work; package ru.myitschool.work;
import android.os.Bundle; import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.widget.Toast; import android.widget.Toast;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import java.util.ArrayList;
import ru.myitschool.work.databinding.ActivityMainBinding; import ru.myitschool.work.databinding.ActivityMainBinding;
public class MainActivity extends AppCompatActivity { public class MainActivity extends AppCompatActivity {
private ActivityMainBinding binding;
private ArrayList<String> 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 @Override
protected void onCreate(@Nullable Bundle savedInstanceState) { protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
final ActivityMainBinding binding = ActivityMainBinding.inflate(getLayoutInflater()); binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot()); setContentView(binding.getRoot());
Toast.makeText(this, R.string.ncreate, Toast.LENGTH_LONG).show(); binding.protocol.setMovementMethod(new ScrollingMovementMethod());
} }
// Добавьте недостающие методы здесь // Добавьте недостающие методы здесь

View File

@ -1,13 +1,22 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<FrameLayout <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView <TextView
android:layout_width="wrap_content" android:id="@+id/protocol"
android:layout_height="wrap_content" android:layout_width="0dp"
android:layout_gravity="center" android:layout_height="0dp"
android:text="Hello World!"/> android:scrollbars="vertical"
android:text="Протокол\n"
</FrameLayout> 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" />
</androidx.constraintlayout.widget.ConstraintLayout>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 64 KiB