Similar presentations:
Программирование. Создание мобильных приложений на Android
1.
БФ ЦДНИИТ«Наследники Ползунова»
Программирование
Создание мобильных
приложений на Android
Кин Андрей Игоревич
E-mail: [email protected], Тел.+7-962-790-0043
2.
ОС Android________________________
OC Android – операционная система для мобильных телефонов,
планшетов, компьютеров и т.д. на основе ядра Linux
ОС Android – это набор открытого программного обеспечения для
мобильных устройств от компании Google, в состав которого входит
операционная система и комплект базовых межплатформенных
приложений
Android SDK – API для разработки мобильных приложений
Приложения для ОС Android являются программами в байт-коде для
виртуальной машины Dalvik Virtual Machine, которая является
частью мобильной платформы Android
3.
ОС Android. Варианты языков________________________
Варианты языков написания приложений для ОС Android
Java - основной язык для написания мобильных приложений
С# - возможный язык для написания с использованием Monodroid
Python - возможный язык для написания с использованием
фреймворков Kivy или BeeWare Project.
Для компиляции приложений в формат .apk необходима ОС Linux или Mac
4.
ОС Android. Архитектура________________________
Приложения
Рабочий стол
Контакты
Телефон
Браузер
…
Каркас Приложения (Application Framework)
Менеджер
действий
Менеджер
пакетов
Менеджер окон
Менеджер
телефонии
Контентпровайдеры
Менеджер
ресурсов
Система
представлений
Менеджер
местоположения
Менеджер
извещений
Библиотеки
Среда исполнения Android
libc
Media
Framework
WebKit
Менеджер
Поверхностей
SGL
OpenGL | ES
FreeType
SQLite
Библиотеки
ядра
Виртуальная
машина Dalvik
SSL
Ядро Linux
Драйвер
дисплея
Драйвер
камеры
Драйвер
флеш-памяти
Драйвер
компоновщика
Драйвер
клавиатуры
Драйвер
WiFi
Драйвер
аудио
Управление
питанием
5.
ОС Android. Среда исполнения________________________
Особенности ВМ Dalvik
каждое приложение запускается в своем собственном процессе со
своим собственным экземпляром ВМ
высокая оптимизация, способствующая минимальному количеству
затрат памяти
организация поточной обработки данных
6.
ОС Android. Библиотеки________________________
System C library(libc) - стандартная системная библиотека
Media Libraries – библиотеки для работы с видео и
LibWebCore – встроенный веб браузер
Surface Manager – менеджер поверхностей
SGL (Scalable Graphics Library) – 2D графика
3D libraries – 3D графика
FreeType – шрифты
SQLite – БД
7.
ОС Android. Уровень каркаса________________________
Принцип многократного использования – любое приложение
может использовать функциональные возможности другого
приложения, если последнее откроет доступ на использование
своей функциональности
Основа всех приложений:
менеджер действий (Activity Manager) – жизненный цикл приложения
контент-провайдеры (Content Providers) – доступ к данным других приложений
система представлений (View System) – построение внешнего вида приложений
менеджер ресурсов (Resource Manager) – доступ к строковым, графическим и другим
типам ресурсов
менеджер извещений (Notification Manager) - позволяет
отображать пользовательские уведомления в строке статуса
любому
приложению
8.
ОС Android. Уровень приложений________________________
Базовые приложения:
СМС
Календарь
Электронная почта
Карты
Браузер
и т.д.
9.
ОС Android. Компоненты________________________
Типы компонентов
Activity – визуальный пользовательский интерфейс
Service – компонент для выполнения фоновых задач без
пользовательского интерфейса. Могут уведомлять пользователя через
систему уведомлений
Intents – запрос функций из других служб
Broadcast Receiver – принимает системных сообщений и неявных
intents
Content Provider – обмен данными между приложениями
10.
ОС Android. Безопасность________________________
Песочница - отдельный пользователь со своими правами доступа и
полномочиями. Каждое приложение в такой системе получает свой
собственный идентификатор пользователя (UID) и собственный
каталог внутри каталога, так что все его данные защищаются с
помощью простых прав доступа, которые разрешают самому
приложению читать собственные файлы, но запрещают делать это
любому другому процессу.
Права доступа - привилегии, которые позволяют контролировать,
какие именно возможности ОС будут доступны приложению.
11.
ОС Android. Структура приложения________________________
Ссылки
.NET сборки
Xamarin
Метаданные .NET сборки
Файлы для включения в пакет
Декларативный UI
Ресурсы для
цветов
строк
стилей
Ресурсы приложения
.NET файлы
12.
ОС Android. Компоненты приложения________________________
Деятельность (Activity)
Визуальный пользовательский интерфейс приложения
Пример: окно приложения
Обязательный
Службы (Service)
Не
обязательный
Не имеет визуального интерфейса
Выполняется в фоновом режиме
Приемник широковещательных намерений
(Broadcast Receiver)
Не имеет визуального интерфейса
Компонент для получения внешних событий и реакций на них
Контент-провайдер (Content-Provider)
Компонент для создания набора данных, доступных для других
приложений
Пример: CallLog, Settings
Не
обязательный
Не
обязательный
13.
ОС Android. Жизненный цикл Activity________________________
Состояния Activity
Resumed
(visible)
Активная
(active или running)
OnResume()
Приостановленная
(paused)
Остановленная
(stopped)
Started
(visible)
OnResume()
OnPause()
Paused
(partially visible)
OnStart()
OnStop()
OnStart()
Created
События Activity
OnCreate()
OnCreate()
OnStart()
OnRestart()
OnResume()
OnPause()
OnStop()
OnDestroy()
OnRestart()
Stopped
(hidden)
OnDestroy()
DESTROYED
14.
ОС Android. Создание разметки________________________
ViewGroup
ViewGroup
View
View
View
View
View
Компоновщик – объединение нескольких
компонентов в одной группе
Варианты компоновщиков (View Group):
Relative layout
Table Layout
Frame Layout
Linear Layout
15.
ОС Android. Linear Layout________________________
Linear Layout – компоновка различных элементов один за одним последовательно.
Компоновка происходит либо вертикально, либо горизонтально в зависимости от
параметра orientation
android:orientation="horizontal"
android:orientation="vertical"
16.
ОС Android. Table Layout________________________
Table Layout – расширенная компоновка LinearLayout. Выстраивает вложенные
элементы в строки, и столбцы, как и в любой таблице. Рекомендуется при
разработке приложений типа калькулятор
Table Layout состоит из TableRow , внутри которых можно размещать другие
элементы и они будут выстраиваться горизонтально
17.
Задания________________________
"1" Реализовать интерфейс, представленный
на слайде. В качестве компоновщика
использовать Table Layout
"2" Сделать так, что бы по нажатию на каждую
кнопку, в текстовое поле добавлялось
содержимое кнопки
18.
OC Android. Ресурсы________________________
Ресурсы
Цветовые
#RGB
#ARGB
#RRGGBB
#AARRGGBB
Строковые
Типовые
Размеры
Числовые
(целые)
Булевские
Массивы
Разметка
(layout)
Меню
Изображе
ния
Рисуемые
(drawable)
Отрисовываемые
цвета
Цвета - идентификатор кода, задающийся в 16-ом коде
Адрес: resources/value/colors.xml
Типовые – типовые значения переменных
Адрес: resources/value/strings.xml или другие
Размеры – задаются в различных единицах – пиксели, дюймы, точки и т.д.
Адрес: resources/value/styles.xml (обычно)
Массивы – массивы типовых значений
Адрес: resources/value/array.xml (обычно)
Разметка – компоновщик
Адрес: resources/layout/activity_main.axml
Стиль
Анимация
19.
OC Android. Ресурсы________________________
Компонент
Реализация
Строка
<string name = “Str1”>String_1</string>
<string name = “Str2”>String_2</string>
Число
<integer name = “I1”>547</integer>
Булева
<bool name = “autostart”> true</bool>
Цвет
<color name = “ColorRed”> #f00</color>
<color name = “ColorRed”> #00ff0000</color>
Размер
<dimen name ="in_pixels">1px</dimen>
<dimen name ="in_dp">5dp</dimen>
<dimen name ="in_sp">100sp</dimen>
Массив типа int
<integer-array name ="years">
<item>2009</item>
<item>2010</item>
<item>2011</item>
</integer-array>
20.
OC Android. Ресурсы________________________
string.xml
Название приложения
color.xml
Основной цвет
Основной цвет (темный)
Цвет нижнего бара
Задний фон приложения
style.xml
Название темы
Изначальная конфигурация темы
Кастомизация темы
21.
OC Android. Пример________________________
string.xml
<string name = “PrimaryText”>Hello,World</string>
color.xml
<color name = “PrimaryColor”>#ff6417</color>
<color name = “PrimaryColorDark”>#ba4c14</color>
<color name = “PrimaryColorText”>#000000</color>
22.
OC Android. Пример________________________
Если параметры заданы в других файлах .xml, то обращение к ним
происходит с использованием @ следующим образом:
@<название_папки>/<имя_строки>
Задание параметра стиля
<item name =
“android:<параметр_стиля>”>@<название_папки>/<имя_строки></item>
23.
OC Android. Пример________________________
Итоговый файл со стилем
Смена названия
Label – текст в Primary
Theme – тема, описываемая в style.xml
24.
OC Android. Программное создание________________________
компонентов
Создание компонента
<тип_компонента><имя_компонента> = new<тип_компонента>(this); //this – аналог self в python
Пример создания кнопки
Button B = new Button(this);
Считывание строки из ресурсов
B.Text = Resources.GetString(Resource.<название_xml>.<имя_строки>);
Считывание числа из ресурсов
int num = Resources.GetInt(Resource.<название_xml>.<имя_числа>);
Получение цвета из ресурсов
B.SetTextColor(Resources.GetColor(Resource.<название_xml>.<имя_цвета>);
Задание размера шрифта
B.SetTextSize(Android.Util.ComplexUnitType.Dip, 20);
Установка центра по центру или как необходимо
B.Gravity = GravityFlags.Center;
25.
________________________OC Android. Компоновщик
Создание компоновщика
LinearLayout Main = new LinearLayout(this);
Main.LayoutParameters = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MatchParent,
LinearLayout.LayoutParams.MatchParent);
Добавление в компоновщик компонента
Main.AddView(B)
Установка компоновщика на форму
SetContentView(Main);
26.
OC Android. Ресурсы. Задание________________________
"1" Создайте необходимые ресурсы (цвета,
строки) для данного окна
"2" Программным способом создайте
компоновщик (в данном случае
LinearLayout)
"3" Создайте 4 компонента TextView и
заполните их
"5" Создайте две кнопки и одно текстовое поле с
возможностью ввода (EditView). В поле можно
вводить только целые положительные числа в
диапазоне от 1 до 100. В случае, если введено
больше 100, при работе программы снижать это
значение до 100.
Сделать так, что бы соотношение высоты кнопок
выставлялось в соответствии со значением,
написанным в текстовом поле.
Допустим, написано 78, тогда нажатая кнопка
должна занимать 78%, другая – 22%.
27.
OC Android. Представления(компоненты)___________________________
Название
TextView
Определение
Стандартный элемент для вывода текста.
EditText
Редактируемое поле для ввода текста
ListView
Группа представлений, формирует вертикальный
список элементов, отображая их в виде строк
внутри списка
Button
CheckBox
RadioButton
Стандартная кнопка
Кнопка, имеющая два состояния – нажатая и не
нажатая
Кнопка, где можно выбрать только один вариант из
предложенных
28.
Задание___________________________
"1" Создать интерфейс, имитирующий вход в систему
(логин, пароль, кнопка войти). При неправильном вводе
выводить сообщение что логин или пароль введены
неверно.
"2" Осуществить переход из одного окна в другой
"3" Создать радиогруппу и текстовое поле, состоящую из
трех кнопок: красный, зеленый, синий. По изменению
состояния радиогруппы изменять текстовое поле по
типу: выбран «название_цвета» цвет. Так же сделать так,
что бы цвет текста изменялся в соответствии с
выбранным элементом.
"4" Создать кнопку, предназначенную для выхода из
приложения
29.
Адаптеры___________________________
Данные
Адаптер
Объект
Адаптер – мост, позволяющий соединить ресурсы
(данные) с представлениями (объектами)
30.
Реализация___________________________
ArrayAdapter предназначен для работы с ListView. Данные представлены
в виде массива, которые размещаются в отдельных элементах TextView
Данные
1.
2.
Опишите массив строк(чисел или др.) в
ресурсах
Создайте компонент ListView в activity_main
Адаптер
Объект
31.
Реализация___________________________
3. Создание разметки для списка
1) Создание отдельно xml файла в Layout
2) Описание разметки
32.
Программная привязка с использованиемадаптера
___________________________
1. Считывание массива из ресурсов
var countries = Resources.GetStringArray(Resource.Array.countries);
2. Поиск ListView по Id
ListView LV = FindViewById<ListView>(Resource.Id.LV);
3. Создание адаптера, соединяющего компонент и данные
ArrayAdapter<string> A = new ArrayAdapter<string> (this,
Resource.Layout.list_item_1, countries);
4. Установка адаптера для компонента
LV.SetAdapter(A);
33.
Задание___________________________
"6" Создать интерфейс, в котором будет осуществляться
выбор улицы, номера, дома из представленных списков.
34.
Намерения___________________________
Намерение (Intent) - это механизм для описания одной
операции - выбрать фотографию, отправить письмо,
сделать звонок, запустить браузер и перейти по
указанному адресу.
35.
Намерения___________________________
Intents
Явные (explicit)
Activity1
Неявные (implicit)
Activity2
+
Открыть браузер
Открыть галерею
Открыть карту
36.
Явные intent'ы___________________________
Явные intent'ы определяют компонент для запуска по имени,
в основном используется в своем собственном приложении.
Что указывается
Адресат (какой компонент получит этот intent)
Дополнительные данные, которые получит адресат
37.
Явные intent'ы___________________________
38.
Явные intent'ы___________________________
Этапы задания:
1) Создать еще одну активити
2) Создать еще один файл типа .cs (класс)
3) В каждом из файлов прописать события нажатия кнопок
с использованием интентов
4) Описать в манифесте какое из активити будет главным.
39.
Явные intent'ы___________________________
Создание intent'а :
Intent name = new intent(context, type);
context – контекст текущего состояния объекта (this)
type – тип intent'a
Пример:
Intent N = new intent(this, typeof(Activity);
Запуск активности:
StartActivity(name);
40.
Манифест___________________________
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1"
android:versionName="1.0"
package="AndroidBlankApp5.AndroidBlankApp5">
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="29" />
<application android:allowBackup="true" android:label="@string/app_name" android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name="MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"></action>
<category android:name="android.intent.category.LAUNCHER"></category>
</intent-filter>
</activity>
<activity android:name="NewActivity"></activity>
</application>
</manifest>
41.
Передача и прием данных___________________________
name.PutExtra(k, v);
k – ключ, по которому потом можно будет считать данные
v – значение, которое передается
Intent next = new Intent(this,typeof(NewActivity));
next.PutExtra("log", 123);
StartActivity(next);
string str = Intent.GetStringExtra(k);
k - ключ
string N = Intent.GetStringExtra("123");
B2.Click+= delegate(object sender, EventArgs args) { B2.Text = N; };
42.
Задание___________________________
Создать приложение, в котором на первом экране вводится
какой-либо текст, а на другом экране будет отображаться
зашифрованный текст. Шифрование текста реализовать с
помощью:
«3» - шифра Цезаря
«4» - Азбуки Морзе
«На дом» - Создать генератор мемов (2 строки для ввода, 2
строки для генерирования и загрузки картинки на
первом активити). На втором – сгенерированный мем.
43.
Неявные intent’ы___________________________
Неявные intent'ы не дают определенные целевые
компоненты, но включает достаточно информации для
системы чтобы определить, какой настоящий компонент
подходит для запуска этого намерения.
В неявные intent’ы передаются:
Action – действия
Data – данные
Category – при каких обстоятельствах
действие
обслуживается
44.
Неявные intent’ы___________________________
Примеры работы с неявными intent’ами
1) Позвонить
2) Отправить смс
3) Открыть ссылку в браузере
4) Написать на e-mail
45.
Action. Открытие ссылки в браузере___________________________
Для открытия ссылки в браузере необходимо иметь ссылку
(data) и определиться с действием.
ActionAnswer
ActionCall
ActionHeadsetPlug
Открывает активность, связанную с входящими звонками.
Открывает активность, инициализирующую обращение к телефону.
Подключение наушников.
ActionSend
Вызов активности для отправки данных, указанных в намерении.
Действие ACTION_SEND следует использовать только в тех случаях, когда
данные необходимо передать удаленному адресату, а не другой программе
на том же устройстве.
ActionSendto
Открывает активность для отправки сообщений контакту, указанному в пути
URI, который определяется в намерении.
ActionView
Наиболее распространенное общее действие просмотра чего-либо. Выбор
приложения зависит от схемы (протокола) данных : стандартные адреса http
будут открывать браузер, адреса tel вызовут приложение для дозвона, geo
откроет программу Google Maps, а данные с контактами откроют
приложении для управления контактной информацией.
ActionWebSearch
Открывает активность поиска информации в интернете, основываясь на
передаваемых данных с помощью пути URI; как правило, при этом
запускается браузер.
46.
Создание intent’a для открытия ссылки вбраузере
___________________________
string URL = "http://google.com";
Intent GoToTheGoogle = new Intent(Intent.ActionView, Uri.Parse(URL));
StartActivity(go_to_google);
Конструктор Intent содержит 2 передаваемых параметра:
1) Тип действия
2) Данные, которые нужно обработать
47.
Создание intent’a для звонка и смс___________________________
Звонок
string number = "tel:89627900043";
Intent call = new Intent(Intent.ActionView, Uri.Parse(number));
StartActivity(call);
Смс
Intent smsIntent = new Intent(Intent.ActionSendto, Uri.Parse("smsto:89627900043"));
smsIntent.PutExtra("sms_body", "Some SMS text");
StartActivity(smsIntent);
Задание: Создать телефонную книгу с:
1) возможностью отправлять сообщения и осуществлять
звонки
2) добавлять и удалять контакты
48.
Меню. Создание___________________________
1. Создается файл xml в отдельной папке с ресурсами, в
котором прописываются составляющие меню
Item – отдельный компонент меню
49.
Меню. Создание___________________________
Перезаписываются функции для:
Создания меню public override bool OnCreateOptionsMenu(IMenu
menu)
{
MenuInflater.Inflate(Resource.Menu.MainMenu, menu);
return base.OnCreateOptionsMenu(menu);
}
Выполнение каких либо действий по нажатию на элемент меню
public override bool OnOptionsItemSelected(IMenuItem item)
{
switch (item.ItemId)
{
case Resource.Id.item1:
Toast.MakeText(Application.Context, "item1 is selected", ToastLength.Short).Show();
break;
case Resource.Id.item2:
Toast.MakeText(Application.Context, "item2 is selected", ToastLength.Short).Show();
break;
}
return base.OnOptionsItemSelected(item);
}
50.
Меню. Создание___________________________
public override bool OnCreateOptionsMenu(IMenu menu)
{
MenuInflater.Inflate(Resource.Menu.MainMenu, menu);
return base.OnCreateOptionsMenu(menu);
}
MenuInflater.Inflater – наполнение передаваемого
элемента menu контентом, хранящемся в xml файле
MainMenu
51.
Меню. Создание___________________________
public override bool OnOptionsItemSelected(IMenuItem item)
{
switch (item.ItemId)
{
case Resource.Id.item1:
Toast.MakeText(Application.Context, "item1 is selected", ToastLength.Short).Show();
break;
case Resource.Id.item2:
Toast.MakeText(Application.Context, "item2 is selected", ToastLength.Short).Show();
break;
}
return base.OnOptionsItemSelected(item);
}
switch – оператор множественного выбора. Выбирает
один из предложенных в его теле case-ов.
В данном случае идет поиск по Id item-ов меню
Toast.MakeText – всплывающее сообщение
52.
Меню. Создание подменю___________________________
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android =
"http://schemas.android.com/apk/res/android">
<item android:id="@+id/item1"
android:title="item1">
<menu>
<item android:id = "@+id/item3"
android:title="item3">
</item>
<item android:id = "@+id/item4"
android:title="item4">
</item>
</menu>
</item>
<item android:id="@+id/item2"
android:title="item2"
/>
</menu>
53.
Меню. Задание___________________________
Задание: Доработать телефонную книгу
1) Создать меню, в котором будут находиться кнопки для
создания и удаления контакта
2) Осуществить возможность поиска по контактам
54.
Контекстное меню___________________________
Контекстное меню вызывается длительным нажатием на
каком-либо экранном компоненте.
1. Создайте 2 TextView, в которых
будет задаваться цвет и размер
текста
2. В функции onCreate опишите их
и зарегистрируйте их для
контекстного меню
T[0] = FindViewById<TextView>(Resource.Id.T1);
RegisterForContextMenu(T[0]);
55.
Контекстное меню. Программноесоздание
___________________________
Функции для работы с контекстным меню:
OnCreateContextMenu(IContextMenu
menu,
IContextMenuContextMenuInfo menuInfo);
View
IContextMenu – переменная для контекстного меню
View – объект, для которого будет вызываться контекстное меню
IContextMenuContextMenuInfo – доп. информация
OnContextItemSelected(IMenuItem item);
IMenuItem – Элемент меню
v,
56.
Контекстное меню. OnCreateContextMenu___________________________
OnCreateContextMenu – функция, отвечающая за создание
контекстного меню компонентов
public override void OnCreateContextMenu(IContextMenu menu, View v,
IContextMenuContextMenuInfo menuInfo)
{
base.OnCreateContextMenu(menu, v, menuInfo);
switch (v.Id)
{
case Resource.Id.T1:
menu.Add(0, 1, 0,
menu.Add(0, 2, 0,
menu.Add(0, 3, 0,
break;
case Resource.Id.T2:
menu.Add(0, 4, 0,
menu.Add(0, 5, 0,
menu.Add(0, 6, 0,
break;
}
"Red");
"Green");
"Blue");
"10");
"14");
"18");
}
menu.Add(groupId, itemId, order, title)
57.
Контекстное меню. OnContextItemSelected___________________________
OnContextItemSelected – функция, отвечающая за выбор
элемента контекстного меню
public override bool OnContextItemSelected(IMenuItem item)
{
switch (item.ItemId){
case 1:
for (int i = 0; i < T.Length; i++) {
T[i].SetTextColor(Color.Red);
}
case 4:
for (int i = 0; i < T.Length; i++){
T[i].SetTextSize(ComplexUnitType.Dip,10);
}
}
return base.OnContextItemSelected(item);
}
SetTextColor(Color) – установка цвета текста
SetTextSize (Type, Size) – установка размера шрифта
Type – тип величины (ComplexUnitType.Dip - dp)
58.
Контекстное меню. Задание___________________________
Задание: Доработать телефонную книгу
1) Дополнить меню элементом настройки
2) В окно настроек добавить следующие параметры:
размер шрифта
+79627900043
цвет шрифта
формат вывода телефона +7(962) 790-00-43
(962)790-0043
3) Для каждого из элемента настроек реализовать контекстное
меню
4) Проверить итоговую функциональность телефонной книги
59.
Хранение данных в приложении___________________________
Хранение данных
способами:
в
android
осуществляется
тремя
Preferences – хранение небольшого количества данных в
самом приложении
SQLite – базы данных, таблицы
Файлы – во внутренней и внешней (SD-карты) памяти
телефона
60.
Компонент ISharedPreferences___________________________
ISharedPreferences – постоянное хранилище на платформе
andorid
ISharedPreferences sPref;
//Получение доступа к хранилищу
sPref = GetPreferences(FileCreationMode.Private);
Для записи данных в хранилище необходимо создать Editor
Editor – объект, предназначенный для каких-либо изменений в
хранилище приложения
ISharedPreferencesEditor editor = sPref.Edit();
//Обновление editor-a
editor.Apply();
61.
Хранение данных в приложении___________________________
Preference хранит данные в виде пары – ключ, значение
ключ
Метод записи данных
значение
editor.PutString("savedText", L.Text.ToString())
PutInt
PutBoolean
PutFloat
PutLong
Метод чтения данных
sPref.GetString("savedText",
""
);
ключ дефолтное значение
62.
Хранение данных в приложении.Задание
___________________________
Написать
программу,
позволяющую
записывать
информацию из editText в хранилище и считывать ее
оттуда
1. Создать объект, описывающий хранилище в приложении
ISharedPreferences sPref;
2. Создать события нажатия на кнопку для считывания и
записи информации в хранилище
63.
Хранение данных в приложении.Запись в хранилище
___________________________
In.Click += delegate(object sender, EventArgs args) {
sPref = GetPreferences(FileCreationMode.Private);
ISharedPreferencesEditor editor = sPref.Edit();
editor.PutString("savedText", L.Text.ToString());
editor.Apply();
Toast.MakeText(Application.Context, "Текст записан",
ToastLength.Short).Show();
64.
Хранение данных в приложении.Чтение из хранилища
___________________________
Out.Click += delegate(object sender, EventArgs args) {
sPref = GetPreferences(FileCreationMode.Private);
string getText =
sPref.GetString("savedText","");
L.Text = getText;
Toast.MakeText(Application.Context, "Текст считан",
ToastLength.Long).Show();
};
65.
Хранение данных в приложении.Весь код
___________________________
private Button In, Out;
private EditText L;
private ISharedPreferences sPref;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.activity_main);
In = FindViewById<Button>(Resource.Id.Click1);
Out = FindViewById<Button>(Resource.Id.Click2);
L = FindViewById<EditText>(Resource.Id.LogIN);
In.Click += delegate(object sender, EventArgs args) {
sPref = GetPreferences(FileCreationMode.Private);
ISharedPreferencesEditor editor = sPref.Edit();
editor.PutString("savedText", L.Text.ToString());
editor.Apply();
Toast.MakeText(Application.Context, "Текст записан", ToastLength.Short).Show();
};
Out.Click += delegate(object sender, EventArgs args) {
sPref = GetPreferences(FileCreationMode.Private);
string getText = sPref.GetString("savedText","");
L.Text = getText;
Toast.MakeText(Application.Context, "Текст считан", ToastLength.Long).Show();
};
}
66.
Хранение данных в приложении.Задание
___________________________
1. Создать поля для ввода логина и пароля. Осуществить сохранение
данных, введенных в эти поля по закрытию приложения и, если
данные есть в хранилище, отображать эти данные в полях.
2. Дополнить задание №1. Добавить чек-бокс, отвечающий за
запоминание логина и пароля. В случае, если в чек-боксе будет стоять
галочка, данные будут записаны в хранилище, иначе – нет.
3. Дополнить задание №2. Добавить второе активити, на которое
будет происходить переход при вводе правильного пароля. Если в
чек-боксе стоит галочка, то при следующем запуске автоматически
должно отображаться второе активити.