Телефонуйте » (+38) 096 227 41 41

Після попереднього уроку, у вас є додаток, який показує activity (простий екран) з текстовим полем і кнопкою. У цьому уроці ви додасте деякий код до MainActivity, який запускає нову activity, щоб відобразити повідомлення, коли користувач натискає Send ("Надіслати"). Примітка: очікується, що ви використовуєте Android Studio 2.3 або більш нову версію.

Реакція на кнопку Send (НАДІСЛАТИ)

Додайте метод в MainActivity.java, який викликається кнопкою, наступним чином:

1. У файл app > java > com.example.myfirstapp > MainActivity.java, додайте порожній метод sendMessage(), як показано нижче:

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    /** Called when the user taps the Send button */
    public void sendMessage(View view) {
        // Do something in response to button
    }
}

Ви можете побачити помилку, оскільки Android Studio не може вирішити клас View, який використовується як аргумент методу. Тож клацніть курсором на декларації View, а потім виконайте Quick Fix (Швидке виправлення), натиснувши Alt + Enter (або Option + Enter на Mac). (Якщо з'явиться меню, виберіть Import class.)

2. Тепер поверніться до файлу activity_main.xml, щоб викликати цей метод через кнопку:

1. Клацніть, щоб вибрати кнопку у Layout Editor (редакторі макета).

2. У вікні Properties (Властивості) знайдіть властивість onClick і виберіть із списку, який випадає, sendMessage [MainActivity].

Тепер, коли кнопка використовується, система викликає метод sendMessage().
Зверніть увагу на подробиці цього методу, які необхідні для того, щоб система визнала його сумісним з атрибутом android:onClick. Зокрема, метод повинен оголосити наступне:

• Публічний доступ
• Повернення значення void
View як єдиний параметр (це об'єкт View, на якому натискають)

Далі ви більше заповните цей метод, щоб прочитати вміст текстового поля та додати прочитаний текст до іншої activity.

Будуємо Intent (мету, НАМІР)

Intent (Намір) - це об'єкт, який забезпечує зв'язок часу виконання між окремими компонентами, такими як дві дії. Intent - це "намір щось зробити". Ви можете використовувати наміри для широкого кола завдань, але в цьому уроці ваш намір просто запускає іншу activity.
У MainActivity.java додайте константу EXTRA_MESSAGE та код sendMessage(), як показано нижче:

public class MainActivity extends AppCompatActivity {
    public static final String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    /** Called when the user taps the Send button */
    public void sendMessage(View view) {
        Intent intent = new Intent(this, DisplayMessageActivity.class);
        EditText editText = (EditText) findViewById(R.id.editText);
        String message = editText.getText().toString();
        intent.putExtra(EXTRA_MESSAGE, message);
        startActivity(intent);
    }
}

Android Studio знову зіткнеться з помилкою Cannot resolve symbol (Неможливо вирішити символ), тому натисніть Alt + Enter (або Option + Return на Mac). Ваш імпорт повинен закінчитися наступним чином:

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

Наступна помилка для DisplayMessageActivity, але це нормально і ви її вирішите в наступному розділі.

Ось що відбувається в sendMessage():

• Конструктор Intent має два параметри:

Context як його перший параметр (використовується this тому, що клас Activity є підкласом Context)
Class компоненту додатка, до якого система повинна застосувати Intent (у цьому випадку, діяльність, яку слід розпочати).

• Метод putExtra() додає значення EditText до Intent. Intent може переносити типи даних як пари ключових значень, що називаються extras (додатковими). Ваш ключ - загальнодоступна константа EXTRA_MESSAGE, оскільки наступна activity використовує ключ, щоб отримати текстове значення. Рекомендується визначати ключі для extras намірів, використовуючи назву пакета додатка як префікс. Це гарантує, що ключі будуть унікальними, якщо ваш додаток взаємодіє з іншими додатками.

• Метод startActivity() запускає екземпляр DisplayMessageActivity, визначений в Intent. Тепер вам потрібно створити цей клас.

Створення другої Activity

1. У вікні Project клацніть правою кнопкою миші папку app та виберіть New > Activity > Empty Activity.

2. У вікні Configure Activity введіть "DisplayMessageActivity" для Activity Name та натисніть кнопку Finish (залиште всі інші властивості встановленими за замовчуванням).

Android Studio автоматично робить три речі:

• Створює файл DisplayMessageActivity.java.
• Створює відповідний файл макета activity_display_message.xml.
• Додає необхідний елемент <activity> в AndroidManifest.xml.

Якщо ви запустите додаток і натиснете кнопку на першій activity, то запускається друга activity, але вона порожня. Це тому, що друга activity використовує порожній макет, наданий шаблоном.

ДОДаємо вигляд для текста


Рис 1. Текст розташовано у верхній частині макета

Нова activity включає в себе порожній файл макета, тому тепер треба додати вигляд тексту, на якому з'явиться повідомлення.

1. Відкрийте файл app > res > layout > activity_display_message.xml.
2. На панелі інструментів натисніть Turn On Autoconnect (Автоматичне підключення).
3. З вікна Pallete перетягніть TextView в макет і помістіть його біля вершини макета, розташувавши поблизу центру, щоб він центрувався по вертикальній лінії, яка з'являється, а потім залиште. Autoconnect додає обмеження для розміщення вигляду в горизонтальному центрі.
4. Створіть ще одне обмеження у верхній частині вікна вигляду тексту у верхній частині макета, щоб він виглядав, як показано на рис.1.
Можете зробити певні коригування стилю тексту шляхом розширення textAppearance у вікні Properties, змінивши такі атрибути, як textSize та textColor.

Відображення повідомлення

Тепер ви будете змінювати другу activity, щоб відобразити повідомлення, яке було передано першою activity.

1. В DisplayMessageActivity.java додайте наступний код до методу onCreate():

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display_message);
   
    // Get the Intent that started this activity and extract the string
    Intent intent = getIntent();
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

    // Capture the layout's TextView and set the string as its text
    TextView textView = (TextView) findViewById(R.id.textView);
    textView.setText(message);
}

2. Натисніть Alt + Enter (або Option + Return на Mac), щоб імпортувати відсутні класи. Ваші імпорти повинні закінчуватися наступним чином:

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.TextView;

ДОдаємо навігацію

Кожен екран у вашому додатку, який не є головним входом (усі екрани, які не є екраном "home"), повинні забезпечувати навігацію, щоб користувач міг повернутися до логічного батьківського екрана в ієрархії додатків, натискаючи кнопку Up на панелі програм.

Все, що вам потрібно зробити, це оголосити у файлі AndroidManifest.xml, яка саме activity є логічним батьком. Тож відкрийте файл app > Manifests > AndroidManifest.xml, знайдіть тег <activity> для DisplayMessageActivity і замініть його наступним:

<activity android:name=".DisplayMessageActivity"
          android:parentActivityName=".MainActivity" >
    <!-- The meta-data tag is required if you support API level 15 and lower -->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value=".MainActivity" />
</activity>

Система Android тепер автоматично буде додавати кнопку Up на панелі програм.

Запускаємо додаток

Тепер запустіть додаток ще раз, натиснувши Apply Changes на панелі інструментів. Коли він відкриється, введіть повідомлення в текстовому полі та натисніть Send, щоб побачити повідомлення, яке з'явиться у другій activity.


Рис 2. Скріншоти обох activity

Ось так ви створили свій перший додаток для Android!
Щоб продовжити вивчати основи розробки додатків Android, перейдіть до наступного уроку.

(Оновлено 22.10.2017)

Попередній урокНаступний урок

(Джерело: developer.android.com)

Новини

  • SDR в IoT

    iotSDR пропонує платформу розробок для IoT-радіо та мережевих доменів. На платі два передавачі Microchip AT86RF215, для вводу-виводу модему на Xilinx ZYNQ SoC, приймач GNSS MAX2769 для GPS, Galileo, BieDou та Glonass. Плата сумісна з ПЗ GNURadio SDR. Дозволяє розробити протоколи фізичного рівня LoRa, SigFox, WightLess, Bluetooth, BLE, 802.15.4, ZigBee тощо для IoT, або шлюз IoT через TheThingsNetwork, LPWAN або Google Thread. Пам'ять EEPROM: 1x AT24MAC602 , flash-пам'ять: 1x QSPI 128 Мб, RAM: 256 MБ DDR3,слот для Micro SD карти, входи/виходи: 2x 8-бітних інтерфейси PL, інтерфейс 8-бітного PS, Gigabit Ethernet, USB 2.0 (USB3310), USB 2.0 (CP2104), 2x SMA RF-роз'єми для приймача діапазонів IoT, 2x SMA RF-роз'єми для приймача 2,4 ГГц , RF-роз'єм приймач GNSS, FPGA-роз'єм JTAG для програмування. Розміри плати: 76,2 мм x 101,6 мм.

     

    in Новини

Записатися на курс