From c2fd98e505d01e8c9a1543ec58d433b4869fcdcd Mon Sep 17 00:00:00 2001 From: Skripkin Andrei Date: Tue, 4 Jun 2024 13:33:13 +0300 Subject: [PATCH] Merged with old project --- README.md | 36 +++++++++++++++++++ app/src/main/AndroidManifest.xml | 12 ++++++- .../java/ru/myitschool/work/MainActivity.java | 20 +++++++++++ app/src/main/res/layout/activity_main.xml | 10 ++++++ app/src/main/res/values/strings.xml | 2 +- 5 files changed, 78 insertions(+), 2 deletions(-) create mode 100644 README.md create mode 100644 app/src/main/java/ru/myitschool/work/MainActivity.java create mode 100644 app/src/main/res/layout/activity_main.xml diff --git a/README.md b/README.md new file mode 100644 index 0000000..e873c4b --- /dev/null +++ b/README.md @@ -0,0 +1,36 @@ +[![Android Studio version](https://img.shields.io/endpoint?url=https%3A%2F%2Fsicampus.ru%2Fgitea%2Fcore%2Fdocs%2Fraw%2Fbranch%2Fmain%2Fandroid-studio-label.json)](https://sicampus.ru/gitea/core/docs/src/branch/main/how-upload-project.md) + +# Практическая работа. New Words + +В данном практическом задании предлагается дописать существующий проект Android приложения, а именно реализовать возможность сохранения списка английских слов, введённых пользователем, в текстовый файл. + +1. В разметке приложения должны присутствовать элементы, указанные в [табл. 1](#table1). Все элементы разметки должны быть полностью видны и в случае открытой экранной клавиатуры. +2. Слова вводятся в поле с `id/words_input`, разделяются запятой (с пробелом или без пробела). Необходимо сохранить все введённые слова в файл **`words.txt`** в том же порядке. +3. Каждое слово в файле **`words.txt`** должно находиться на отдельной строке; в файле не должно быть слов, которые не были введены в *EditText*. +4. Создание файла происходит по нажатии на *View* (или любого наследника, например, *Button*) c `id/write_internal` или `id/write_external`. +5. Если было совершено нажатие на *View* c `id/write_internal`, то файл создаётся во внутреннем хранилище. Если было совершено нажатие на *View* c `id/write_external`, то файл создается во внешнем хранилище. +6. На экране должна быть расположена *TextView* с `id/file_content`, в которую по нажатию на любую кнопку рассчитывается количество введённых пользователем слов. +7. Файл должен размещаться в папке с номером текущего месяца (нумерация с 1), которая находится в папке приложения во внутреннем (внешнем) хранилище устройства. + +Для получения хранилища используйте функцию: +```java +// Вызов внутри Activity +void foo() { + getExternalFilesDir(null); // Получение пути до внешнего хранилища + getFilesDir().getPath(); // Получение пути до внутреннего хранилища +} +``` + +Например, при использовании внешнего хранилища путь к файлу может выглядеть так: +```text +/storage/emulated/0/Android/ru.myitschool.lab23/files/3/words.txt +``` + +| № | тип View | идентификатор | +| - | :------: | ------------- | +| 1 | *View* | `write_internal` | +| 2 | *View* | `write_external` | +| 3 | *TextView* | `file_content` | +| 4 | *EditText* | `words_input` | + +*Таблица 1: Элементы пользовательского интерфейса* \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 9ee5c40..d406a8f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,6 +11,16 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.Default" - tools:targetApi="31" /> + tools:targetApi="31"> + + + + + + + + \ 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 new file mode 100644 index 0000000..44782b1 --- /dev/null +++ b/app/src/main/java/ru/myitschool/work/MainActivity.java @@ -0,0 +1,20 @@ +package ru.myitschool.work; + +import android.os.Bundle; + +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; + +import ru.myitschool.work.databinding.ActivityMainBinding; + +public class MainActivity extends AppCompatActivity { + + private ActivityMainBinding binding; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + binding = ActivityMainBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..9affce0 --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 96034ac..b2db242 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,3 +1,3 @@ - Work + New Words \ No newline at end of file