Wednesday, 9 February 2011

Подменю и меню Android

В этом примере я покажу как создавать меню и подменю в системе Android. Меню может использоваться, например, для разделения настроек по категориям или для доступа к основным функциям программы.

Итак, для начала создадим директорию (папку) menu в каталоге res.

В каталоге menu должны хранится все XML файлы меню программы. Создадим один такой файл меню. Назовем его menu.xml и поместим в каталог menu ресурсов.

Содержание файла menu.xml будет таким:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <menu
  3.  xmlns:android="http://schemas.android.com/apk/res/android">
  4.    <item android:id="@+id/Menu1"
  5.     android:title="Меню 1"
  6.     android:orderInCategory="1"  />
  7.   <item android:id="@+id/Menu2"
  8.     android:orderInCategory="2"
  9.     android:title="Меню 2" />
  10.   <item android:id="@+id/Menu3"
  11.     android:orderInCategory="3"
  12.     android:title="Меню 3" />
  13.   <item android:id="@+id/submenu"
  14.     android:title="Подменю"
  15.     android:orderInCategory="4">
  16.     <menu>
  17.       <item android:id="@+id/submenu1"
  18.       android:title="Подменю 1" />
  19.       <item android:id="@+id/submenu2"
  20.       android:title="Подменю 2" />
  21.     </menu>
  22.   </item>
  23. </menu>

Теперь напишем Java код для нашей программы:

  1. package com.example;
  2.  
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5. import android.view.Menu;
  6. import android.view.MenuInflater;
  7. import android.view.MenuItem;
  8. import android.widget.Toast;
  9.  
  10. public class ExampleActivity extends Activity {
  11.   
  12.   @Override
  13.   public void onCreate(Bundle savedInstanceState) {
  14.     super.onCreate(savedInstanceState);
  15.     setContentView(R.layout.main);
  16.   }
  17.   public boolean onCreateOptionsMenu(Menu menu) {
  18.     new MenuInflater(getApplication())
  19.         .inflate(R.menu.menu, menu);
  20.     return(super.onPrepareOptionsMenu(menu));
  21.   }
  22.  
  23.   public boolean onOptionsItemSelected(MenuItem item) {
  24.      switch (item.getItemId()) {
  25.       case R.id.Menu1:
  26.         Toast.makeText(this, "Мен. 1", Toast.LENGTH_SHORT).show();
  27.         break;
  28.       case R.id.Menu2:
  29.         Toast.makeText(this, "Меню 2", Toast.LENGTH_SHORT).show();
  30.         break;
  31.       case R.id.Menu3:
  32.         Toast.makeText(this, "Меню 3", Toast.LENGTH_SHORT).show();
  33.         break;
  34.       case R.id.submenu:
  35.         Toast.makeText(this, "Подменю", Toast.LENGTH_SHORT).show();
  36.         break;
  37.     }
  38.     return(super.onOptionsItemSelected(item));
  39.   }
  40. }

И наконец, вот что у нас получилось:


No comments:

Post a Comment