В этом уроке начинаем обзор способов сохранения данных в android приложениях. Начнем с SharedPreferences. SharedPreferences – постоянное хранилище на платформе Android, используемое приложениями для хранения своих настроек, например.

Весь плейлист:
Ссылка на дополнительный материал и исходный код проекта:
Версия урока для Eclipse:

Больше уроков:
Уроки Android Studio:
Инструменты android разработчика:
Дизайн android приложений:
Уроки создания игр для android:
Основы программирования на JAVA:

Группа взаимопомощи Вконтакте для начинающих ANDROID разработчиков и программистов:
Скачать видеоуроки:
Поддержите наш проект:

Подпишись на Продвинутый видеокурс по созданию реального android-приложения:

Nguồn:https://u-os.org/

Author

23 Comments

  1. Рогов Тимур Reply

    А можно вот так?

    SharedPreferences SP;
    Editor ed = SP.edit();
    ed.putString(SAVED_TEXT, etText.getText().toString());
    ed.apply();

  2. не работает!
    Мне нужно сохранить три поля ввода и сохраняется только последний, что делать? Подскажите пожалуйста, буду бесконечно благодарен

  3. а как сохранить массив с помощью sharPfer, чтобы можно было обращаться по индексу?

  4. Работаю в Android Studio 3.2.1.
    Делал все, как в уроке, но при нажатии на кнопку приложение вылетало.
    Добавил EditText et = findViewById(R.id.et);
    внутрь методов save/loadText и все заработало. Аналогичные ситуации были и в некоторых прошлых уроках.

    private void saveText() {

    EditText et = findViewById(R.id.et);

    sPref = getPreferences(MODE_PRIVATE);

    SharedPreferences.Editor ed = sPref.edit();

    ed.putString(SAVED_TEXT, et.getText().toString());

    ed.apply();

    Toast.makeText(MainActivity.this, "Text saved", Toast.LENGTH_SHORT).show();

    }

    private void loadText() {

    EditText et = findViewById(R.id.et);

    sPref = getPreferences(MODE_PRIVATE);

    String savedText = sPref.getString(SAVED_TEXT, "");

    et.setText(savedText);

    Toast.makeText(MainActivity.this, "Text loaded", Toast.LENGTH_SHORT).show();

  5. Igor Poghirca Reply

    sPref уже не актуален (( Надо искать чтото по свежее ))

  6. Mark Delphi Reply

    так в итоге какая разница между SharedPreferences и SQLite? Спасибо за ранее.

  7. Даниил Богданов Reply

    Что делать если он тупо не знает о такой библиотеке для импорта?

  8. Yurii Voloshin Reply

    public static final String DATABASE_NAME = "contactDb"; (class DBHelper)
    а почему если написать "contactDB" – то из-за того что последняя буква заглавная в базу ничего не сохраняется? я пол дня убил чтоб эту ашипку найти….

  9. Nikolai Vasilevich Reply

    Добрый день. Возник один вопрос. Каким образом я могу получить данные, сохранённые в SharedPreference, из другого активити?

  10. Спасибо за уроки. Появилось несколько вопросов. Какой самый безопасный способ хранения данных, например логина и пароля? Файлы SQLite шифруются? Доступ private в preferences означает то, что другие приложения не смогут получить доступ к хранимым значениям, или совсем этого не гарантируют?

  11. Evgen Orlovsky Reply

    при просмотре заметил один момент – getPreferences() обращается к файлу с именем как у активности, решил проверить: одновременно писал в оба варианта – в вышеуказанный и getSharedPreferences, и на другой активности вывел на просмотр, и действительно вывелось только то где был именованный файл настроек.
    спасибо за подробное изложение))

  12. Andrii Diachuk Reply

    Добрый день! Сохранение не работает если приложение закрыть следующим способом: зайти в список открытых приложений, и закрыть его там.

  13. как лучше сохранить данные пользователя (логин и пароль)?
    и ещё вопрос: как заблокировать кнопку Домой?

  14. Sergei Neronov Reply

    метод commit() устарел. Его не рекомендуют использовать!
    На замену к нему пришел apply()

  15. Для того чтобы вставить используем дополнительный объект edit, чтобы загрузить никакого edit`a ненужно… какая то деревянная логика с этими сохранениями… =( ладно, в качестве д.з научусь удалять данные, интересно, edit понадобиться или нет?

  16. как сделать так, что бы можно было писать эдитекст на русском

  17. Roman Demidovich Reply

    Возник такой банальный вопрос. Как убрать панель сверху?(На которой название приложения и возможно меню).

  18. Nair Nairovi4 Reply

    Здравствуйте Виталий. Извиняюсь за наглость. У меня на Плэй Маркете есть приложение "kurikulumAZ". Это приложение тесты для учителей. Я хочу сделать счетчик в конце Активити. Добавить кнопку при нажатии которая показал бы сколько правильных и неправильных ответов. Или хотя бы показала на сколько раз использован тот или иной метод.
    package kurikulum.nair.ru.kurikulum;
    import android.content.Intent;
    import android.graphics.Color;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.TextView;

    public class Test_1 extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test_1);
    }
    public void r (View v) {
    TextView TextView=(TextView)v;
    ((TextView)v).setTextColor(Color.BLACK);
    v.setBackgroundColor(Color.RED);

    }
    public void g (View v) {
    TextView TextView=(TextView)v;
    ((TextView)v).setTextColor(Color.BLACK);
    v.setBackgroundColor(Color.GREEN);
    }
    public void test_2 (View view) {
    Intent intent = new Intent(this, Test_2.class);
    startActivity(intent);
    }

    }

  19. Как сохранить несколько данных? К примеру Имя отдельно, и Фамилию тоже отдельно?

  20. akrendegen adam Reply

    Часто возникают проблемы с рендерингом view элементов активити. С чем это связано? Как устранить эту проблему?

Write A Comment