0% found this document useful (0 votes)
90 views

Android Introduction: GUI Menu

This document provides instructions on how to create an Android application that supports option menus, submenus, and context menus. It describes how to define the menu layouts in XML, inflate the menus in code, and handle menu item clicks by overriding callback methods. The application demonstrates displaying messages when menu items are selected and opening a submenu from the main options menu.

Uploaded by

umesh5040
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
90 views

Android Introduction: GUI Menu

This document provides instructions on how to create an Android application that supports option menus, submenus, and context menus. It describes how to define the menu layouts in XML, inflate the menus in code, and handle menu item clicks by overriding callback methods. The application demonstrates displaying messages when menu items are selected and opening a submenu from the main options menu.

Uploaded by

umesh5040
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 13

Android Introduction

GUI Menu

@2011 Mihail L. Sichitiu

1 Many thanks to Jun Bum Lim for his help with this tutorial.

Goal

Create an application that supports options/sub/context menus

Display messages when a menu clicked


Plus menu will also open a sub-menu <option menu> <sub-menu>
@2011 Mihail L. Sichitiu

Automatically fill Hi! in the EditText

<context menu>
2

Menu Composition
Sub1 Plus Sub2 Hi Hola Hello Long press in EditText

Home

<sub-menu>

Pre

Next <option menu> <context menu from EditText>


@2011 Mihail L. Sichitiu 3

Create HelloMenu Project


Create the two TextViews and an EditText Create menu folder in res/ Create menu.xml in res/menu/ (New > Other > Android XML File) Create context_menu.xml in res/menu/

@2011 Mihail L. Sichitiu

res/menu/menu.xml

Define Option menu and sub-menu

<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/menuItemPlus" android:title="@string/plus" android:icon="@drawable/plus" > Sub-menu items <menu> <item android:id="@+id/menuItemSub1" android:title="@string/sub1"></item> <item android:id="@+id/menuItemSub2" android:title="@string/sub2"></item> </menu> </item> <item android:icon="@drawable/home" android:id="@+id/menuItemHome" android:title="@string/home"></item> <item android:icon="@drawable/pre" android:id="@+id/menuItemPre" android:title="@string/pre"></item> <item android:icon="@drawable/next" android:id="@+id/menuItemNext" android:title="@string/next"></item> </menu>

Option menu items


@2011 Mihail L. Sichitiu 5

res/menu/context.xml

Define context menu for EditText

<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/menuItemHi" android:title="@string/hi_msg"></item> <item android:id="@+id/menuItemHola" android:title="@string/hola_msg"></item> <item android:id="@+id/menuItemHello" android:title="@string/hello_msg"></item> </menu>

@2011 Mihail L. Sichitiu

res/values/strings.xml

Define constant strings used in the application

<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Click Menu Button ! </string> <string name="app_name">Android Menu Example</string> <string <string <string <string name="plus">Plus</string> name="pre">Pre</string> name="next">Next</string> name="home">Home</string>

<string name="sub1">Sub1</string> <string name="sub2">Sub2</string>

<string name="hi_msg">Hi !</string> <string name="hola_msg">Hola !</string> <string name="hello_msg">Hello !</string> </resources>

@2011 Mihail L. Sichitiu

icons

Place icons used in menu.xml in res/drawable/

Download icons at: http://www4.ncsu.edu/~mlsichit/UCAB/resources.html

icons

@2011 Mihail L. Sichitiu

Inflating a option menu resource

Inflating a menu resource (menu.xml) by adding onCreateOptionsMenu(Menu menu) in the main Activity. Menu items in menu.xml will appear when the user touches the MENU button

public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu, menu); return true; }

@2011 Mihail L. Sichitiu

Response to user action

Response to menu click events by overriding onOptionsItemSelected(Menu menu) in the main Activity.
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menuItemPlus: Toast.makeText(this, "Plus Button Clicked !", Toast.LENGTH_SHORT).show(); Log.i(TAG,"menuItemPlus"); return true; : : case R.id.menuItemNext: Toast.makeText(this, "Next Button Clicked !", Toast.LENGTH_SHORT).show(); Log.i(TAG,"menuItemNext"); return true; } return false; }

@2011 Mihail L. Sichitiu

10

Register View for a context menu

By calling registerForContextMenu() and passing it a View (an EditText in this example) you assign it a context menu. When this View (EditText) receives a long-press, it displays a context menu.
private EditText mOutEditText; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mOutEditText = (EditText) findViewById(R.id.editText); registerForContextMenu(mOutEditText); } : :
@2011 Mihail L. Sichitiu 11

public class AndroidMenuExampleActivity extends Activity {

Define context menus appearance

By overriding the activity's context menu create callback method, onCreateContextMenu().

@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.context_menu, menu); }

@2011 Mihail L. Sichitiu

12

Define context menus behavior

By overriding your activity's menu selection callback method for context menu , onContextItemSelected().

@Override public boolean onContextItemSelected(MenuItem item) { Log.i(TAG,"ContextItem selected"); AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); switch (item.getItemId()) { case R.id.menuItemHi: mOutEditText.setText( this.getResources().getText( R.string.hi_msg) ); return true; case R.id.menuItemHola: : : default: return super.onContextItemSelected(item); } }

@2011 Mihail L. Sichitiu

13

You might also like