2.14M
Категория: ПрограммированиеПрограммирование

Несколько активностей. Лекция №5

1.

Лекция №5.
по курсу «Несколько активностей»
Москва 2021

2.

Множественные активности
Для большинства приложений одной активности недостаточно.
Как строить приложения с несколькими активностями и как организовать
взаимодействие между активностями с использованием интентов.
Использовать интенты за границами приложения и как выполнять
действия при помощи активностей других приложений на вашем
устройстве.

3.

Множественные активности

4.

Приложение заметки
Две активности. Одна для ввода текста, другая для его отображения

5.

Приложение заметки
Две активности. Одна для ввода текста, другая для его отображения

6.

Интенты
При запуске приложения будет выполняться наша первая активность,
CreateMessageActivity. Следующий шаг — заставить CreateMessageActivity вызывать
ReceiveMessageActivity, когда пользователь щелкает на кнопке Send Message.
Чтобы запустить одну активность из другой, воспользуйтесь интентом. Интент можно
рассматривать как своего рода «намерение выполнить некую операцию». Это
разновидность сообщений, позволяющая связать разнородные объекты (например,
активности) на стадии выполнения. Если одна активность хочет запустить другую, она
отправляет для этого интент системе Android. Android запускает вторую активность и
передает ей интент.
Intent intent = new Intent(this, Target.class);
Первый параметр сообщает Android, от какого объекта поступил интент; для
обозначения текущей активности используется ключевое слово this. Во втором
параметре передается имя класса активности, которая должна получить интент.
После того как интент будет создан, он передается Android следующим вызовом:
startActivity(intent)

7.

Интенты

8.

Интенты

9.

Интенты
getIntent() возвращает интент, запустивший активность; из полученного
интента можно прочитать любую информацию, отправленную вместе с
ним.
Например, если вы знаете, что интент включает строковое значение с
именем “message”, используйте следующий вызов:
Intent intent = getIntent();
String string = intent.getStringExtra("message");
int intNum = intent.getIntExtra("name", default_value);
может использоваться для получения значения int с именем name.
Параметр default_value указывает, какое значение int должно
использоваться по умолчанию.

10.

Неявные интенты

11.

Неявные интенты

12.

Неявные интенты

13.

Неявные интенты

14.

Неявные интенты

15.

Неявные интенты

16.

Неявные интенты
Заставить пользователя каждый раз предлагать возможность выбора приложения
createChooserIntent

17.

Фильтр интентов

18.

Пример классов
public class Person {
private String firstName;
private String lastName;
private int age;
public Person()
{
int – примитивный тип,
String – класс
Integer – ссылочный тип,
класс оболочка
Автоупаковка
}
public Person(String firstName,
String lastName, int age) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
18

19.

Переопределение методов
Object – родительский класс для всех классов
19

20.

Статические методы
Не требуется создавать объект
package box;
public class MyMath {
public static int square(int number)
{
return number*number;
}
}
Синтаксис:
<Имя класса>.<Имя метода>
MyMath.square(40);
При объявлении запретить изменять ее значение – final
Поля, которые не имеют конкретного отношения к объектам
20

21.

Перегруженные методы, значения по
умолчанию, перегрузка операторов
Синтаксический сахар (англ. syntactic sugar) в языке программирования — это
синтаксические возможности, применение которых не влияет на
поведение программы, но делает использование языка более удобным
для человека. Переопределение операторов только для интуитивно
понятных объектов, например, матриц, не для сотрудников.
int a = Integer.parseInt(s);
Java передает все по значению.

22.

Работа со строками
Извлечение символов и подстрок
Для извлечения символов по индексу в классе String определен метод char
charAt(int index). Он принимает индекс, по которому надо получить
символов, и возвращает извлеченный символ:
String str = "Java";
char c = str.charAt(2);
System.out.println(c); // v
Сравнение строк
String str1 = "Hello";
String str2 = "hello";
System.out.println(str1.equals(str2)); // false
System.out.println(str1.equalsIgnoreCase(str2)); // true
Поиск в строке
Метод indexOf() находит индекс первого вхождения подстроки в строку, а
метод lastIndexOf() - индекс последнего вхождения. Если подстрока не
будет найдена, то оба метода возвращают -1:
String str = "Hello world";
int index1 = str.indexOf('l'); // 2
int index2 = str.indexOf("wo"); //6
int index3 = str.lastIndexOf('l'); //9

23.

Работа со строками
Метод startsWith() позволяют определить начинается ли строка с
определенной подстроки, а метод endsWith() позволяет определить
заканчивается строка на определенную подстроку:
String str = "myfile.exe";
boolean start = str.startsWith("my"); //true
boolean end = str.endsWith("exe"); //true
Замена в строке
Метод replace() позволяет заменить в строке одну последовательность
символов на другую:
String str = "Hello world";
String replStr1 = str.replace('l', 'd'); // Heddo wordd
String replStr2 = str.replace("Hello", "Bye"); // Bye world
Обрезка строки
Метод trim() позволяет удалить начальные и конечные пробелы:
String str = " hello world ";
str = str.trim(); // hello world

24.

Работа со строками
Метод substring() возвращает подстроку, начиная с определенного индекса
до конца или до определенного индекса:
String str = "Hello world";
String substr1 = str.substring(6); // world
String substr2 = str.substring(3,5); //lo
Изменение регистра
Метод toLowerCase() переводит все символы строки в нижний регистр, а
метод toUpperCase() - в верхний:
String str = "Hello World";
System.out.println(str.toLowerCase()); // hello world
System.out.println(str.toUpperCase()); // HELLO WORLD
Split
Метод split() позволяет разбить строку на подстроки по определенному
разделителю. Разделитель - какой-нибудь символ или набор символов
передается в качестве параметра в метод. Например, разобьем текст на
отдельные слова:
String text = "FIFA will never regret it";
String[] words = text.split(" ");
for(String word : words){
System.out.println(word);
}

25.

Работа со строками
StringBuffer, StringBuilder
StringBuffer – синхронизированный и потокобезопасный
StringBuilder – не потокобезопасный, но работает быстрее в однопоточных
приложениях
String str = “Java”;
StringBuffer strBuffer = new StringBuffer(strBuffer);
String s1 = " Hello Java. I like Java ";
String[] words = s1.split("\\s|,|!|\\.");
for(String word:words) {
System.out.println(word);
}

26.

Работа со строками

27.

Коллекции ArrayList
ArrayList<String> people = new ArrayList<String>();
Scanner keyboard = new Scanner(System.in);
for (int i=0; i<4; i++)
people.add(keyboard.nextLine());
people.remove(0); // удаляет элемент с индексом 0
people.add(2,"Shamil");
for (String str:people)
System.out.println(str);

28.

Коллекции HashSet, TreeSet
HashSet<String> names2 = new HashSet<String>();
names2.add("Ivan");
names2.add("Petr");
Нет метода get, порядок не определен
TreeSet храняться в отсортированном виде.

29.

Коллекции
Написать программу в Android Studio, которая отображает форму, где
пользователь вводит количество покупок, есть кнопка «далее»,
«завершить заказ». При нажатии на кнопку «далее» вводится следующее
значение, при нажатии на кнопку «завершить заказ» показывается форма
со всеми введенными значениями.
English     Русский Правила