6. Робота з меню Android

1. Створіть новий проект в Android Studio.

2. Удаліть всі елементи з активного екрану. В папці res/menu відкрийте файл menu_main.xml (цей файл відповідає за пукти меню).

3. Скачайте зображення морського узбережжя та прапору України.

4. Додайте три пункти меню: Море, Україна та Відпочинок. Пункти додаються наступним чином:

1
2
3
4
5
 <item
        android:id="@+id/action_settings" //id пункту
        android:orderInCategory="100" // порядок в меню
        android:showAsAction="never"
        android:title="@string/action_settings"/> // текст у пункті меню

Приклад menu_main.xml:

1
2
3
4
5
6
7
8
9
10
11
12
<menu xmlns:android="<a href="http://schemas.android.com/apk/res/android"<br />
">http://schemas.android.com/apk/res/android"<br />
</a>    xmlns:app="<a href="http://schemas.android.com/apk/res-auto"<br />
">http://schemas.android.com/apk/res-auto"<br />
</a>    xmlns:tools="<a href="http://schemas.android.com/tools"">http://schemas.android.com/tools"</a> tools:context=".MainActivity">
    <item android:id="@+id/vidpochinok" android:title="Відпочинок"
        android:orderInCategory="100" app:showAsAction="never" />
    <item android:id="@+id/form" android:title="Форма"
        android:orderInCategory="99" app:showAsAction="never" />
    <item android:id="@+id/Ukraine" android:title="Україна"
        android:orderInCategory="98" app:showAsAction="never" />
</menu>

5. Перейдіть у ваш MainActivity.java. Знайдіть обробник вибору пунктів меню (onOptionsItemSelected(MenuItem item)). Як ви бачите, вибір здійснюється умовним оператором if. Замініть його на switch наступним чином:

1
2
3
        switch (id) {
        }
    }

6. Допишіть у switch всі можливі варіанти вибору. Має вийти наступне:

1
2
3
4
5
6
7
8
9
10
11
12
        switch (id) {
            case R.id.Ukraine:
 
                return true;
            case R.id.vidpochinok:
 
                return true;
            case R.id.form:
 
                return true;
        }
    }

7. Перейдіть на ваш активний екран. Додайте туди картинку, додайте форму привітання з попередніх робіт, а також текст. Зробіть всі елементи невидимими(visibility = invisible).

8. Оголосіть необхідні змінні та імпортуйте класи для роботи:

1
2
3
4
    public ImageView image1; // змінна для зображення
    public EditText namek; // текстового поля
    public Button hel; // кнопки
    public TextView txt; // відображуваного тексту

9. Напишіть код обробки натискання кнопки:

1
2
3
4
5
6
   public void say(View view) { // метод
        txt = (TextView)findViewById(R.id.text); // пошук елементів
        namek = (EditText)findViewById(R.id.name);
        txt.setText("Hello, "+namek.getText().toString());  // конвертація тексту з
         // текстового поля у відображуваний текст
    }

10. Допишіть коди обробки вибору пунктів меню:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
 
        switch(id){
            case R.id.vidpochinok:
                txt = (TextView)findViewById(R.id.text); // пошук елементів
                txt.setVisibility(View.VISIBLE); // встановлення видимості елемента
                image1 = (ImageView)findViewById(R.id.ukr);
                image1.setVisibility(View.VISIBLE);
                namek = (EditText)findViewById(R.id.name);
                namek.setVisibility(View.INVISIBLE);
                hel = (Button)findViewById(R.id.hello);
                hel.setVisibility(View.INVISIBLE);
                txt.setText("I'm gonna get to the SEA!");  // встановлення тексту
                image1.setImageDrawable(getResources().getDrawable(R.drawable.more)); // зміна зображення
                return true;
            case R.id.Ukraine:
                txt = (TextView)findViewById(R.id.text);
                txt.setVisibility(View.VISIBLE);
                hel = (Button)findViewById(R.id.hello);
                hel.setVisibility(View.INVISIBLE);
                namek = (EditText)findViewById(R.id.name);
                namek.setVisibility(View.INVISIBLE);
                image1 = (ImageView)findViewById(R.id.ukr);
                image1.setVisibility(View.VISIBLE);
                txt.setText("28.06.1996");
                image1.setImageDrawable(getResources().getDrawable(R.drawable.ukraine));
                return true;
            case R.id.form:
                txt = (TextView)findViewById(R.id.text);
                txt.setText("");
                namek = (EditText)findViewById(R.id.name);
                namek.setVisibility(View.VISIBLE);
                hel = (Button)findViewById(R.id.hello);
                hel.setVisibility(View.VISIBLE);
                txt.setVisibility(View.VISIBLE);
                image1 = (ImageView)findViewById(R.id.ukr);
                image1.setVisibility(View.INVISIBLE);
                return true;
        }
 
        return super.onOptionsItemSelected(item);
    }

11. Запустіть програму на виконання. Результати:


Контрольні питання:

1. Опишіть структуру файлу menu-main.xml.

2. Яка властивість відповідає за видимість компонентів і як її редагувати з коду програми?

3. Яким чином відбувається обробка вибору елементів меню?

4. Опишіть змінні, які ви використовували протягом цієї роботи.