Android Studio: Текстовый редактор с сохранением данных

Этот урок посвящен созданию простого текстового редактора, демонстрирующего сохранение и загрузку данных из файла.

Разработка интерфейса

Расширим предыдущую программу, добавив элементы интерфейса. Удалим ненужное изображение и добавим:

  • Два поля для ввода текста (EditText): одно для имени (username_field), другое для биографии (user_bio_field).
  • Две кнопки: «Сохранить» и «Загрузить».

Разместим эти элементы внутри LinearLayout с id mainbox. Параметры элементов:

username_field (Имя):

  • id: username_field
  • layout_width: match_parent
  • layout_height: (без изменений)
  • android:hint: «Введите имя»
  • layout_margin: 20dp (верхний отступ)

user_bio_field (Биография):

  • id: user_bio_field
  • layout_width: match_parent
  • layout_height: 45dp
  • android:hint: «Биография»
  • Расположение: под username_field

Кнопки:

  • «Сохранить»: layout_below: user_bio_field; layout_marginStart: 50px (левый отступ)
  • «Загрузить»: Копия кнопки «Сохранить», текст изменен на «Загрузить»; layout_marginEnd: 50px (правый отступ); layout_alignParentEnd: true (прижата к правому краю)

Добавим общий верхний отступ для элементов внутри mainbox: layout_marginTop: 20dp.

Реализация функциональности

Создадим методы saveData(View view) и getData(View view) для сохранения и загрузки данных, привяжем их к соответствующим кнопкам.

Java код:

EditText userNameField;
EditText userBioField;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // ...
    userNameField = findViewById(R.id.username_field);
    userBioField = findViewById(R.id.user_bio_field);
    // ...
}

public void saveData(View view) {
    String userName = userNameField.getText().toString();
    String userBio = userBioField.getText().toString();

    try {
        FileOutputStream fileOutput = openFileOutput("user_data.txt", MODE_PRIVATE);
        fileOutput.write((userName + ". " + userBio).getBytes());
        fileOutput.close();
        Toast.makeText(this, "Текст сохранен", Toast.LENGTH_SHORT).show();
        userNameField.setText("");
        userBioField.setText("");
    } catch (Exception e) {
        Toast.makeText(this, "Ошибка сохранения файла", Toast.LENGTH_SHORT).show();
    }
}

public void getData(View view) {
    try {
        FileInputStream fileInput = openFileInput("user_data.txt");
        InputStreamReader reader = new InputStreamReader(fileInput);
        BufferedReader bufferReader = new BufferedReader(reader);
        StringBuilder result = new StringBuilder();
        String line;
        while ((line = bufferReader.readLine()) != null) {
            result.append(line).append("\n");
        }
        bufferReader.close();
        reader.close();
        fileInput.close();
        Toast.makeText(this, result.toString(), Toast.LENGTH_SHORT).show();
    } catch (Exception e) {
        Toast.makeText(this, "Ошибка загрузки файла", Toast.LENGTH_SHORT).show();
    }
}

Тестирование

Запустите приложение, введите данные, сохраните и загрузите их. Данные хранятся в файле приложения и доступны после закрытия приложения. Этот простой текстовый редактор демонстрирует базовые операции работы с файлами в Android.

Что будем искать? Например,программа