1.49M
Category: programmingprogramming

Программирование. Создание мобильных приложений на 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. Добавить второе активити, на которое
будет происходить переход при вводе правильного пароля. Если в
чек-боксе стоит галочка, то при следующем запуске автоматически
должно отображаться второе активити.
English     Русский Rules