Adding submenu
package app.test;
import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.widget.TextView;
public class Test extends Activity {
Menu myMenu = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
registerForContextMenu(this.getTextView());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
this.myMenu = menu;
addRegularMenuItems(menu);
add5SecondaryMenuItems(menu);
this.addSubMenu(menu);
return true;
}
private void addRegularMenuItems(Menu menu) {
int base = Menu.FIRST; // value is 1
MenuItem item1 = menu.add(base, base, base, "append");
menu.add(base, base + 1, base + 1, "item 2");
menu.add(base, base + 2, base + 2, "clear");
menu.add(base, base + 3, base + 3, "hide secondary");
menu.add(base, base + 4, base + 4, "show secondary");
menu.add(base, base + 5, base + 5, "enable secondary");
menu.add(base, base + 6, base + 6, "disable secondary");
menu.add(base, base + 7, base + 7, "check secondary");
MenuItem item8 = menu
.add(base, base + 8, base + 8, "uncheck secondary");
item1.setIcon(R.drawable.icon);
item8.setIcon(R.drawable.icon);
}
private void add5SecondaryMenuItems(Menu menu) {
int base = Menu.CATEGORY_SECONDARY;
menu.add(base, base + 1, base + 1, "sec. item 1");
menu.add(base, base + 2, base + 2, "sec. item 2");
menu.add(base, base + 3, base + 3, "sec. item 3");
menu.add(base, base + 3, base + 3, "sec. item 4");
menu.add(base, base + 4, base + 4, "sec. item 5");
}
private void addSubMenu(Menu menu) {
int base = Menu.FIRST + 100;
SubMenu sm = menu.addSubMenu(base, base + 1, Menu.NONE, "submenu");
MenuItem item1 = sm.add(base, base + 2, base + 2, "sub item1");
sm.add(base, base + 3, base + 3, "sub item2");
sm.add(base, base + 4, base + 4, "sub item3");
item1.setIcon(R.drawable.icon);
sm.setIcon(R.drawable.icon);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == 1) {
appendText("\nhello");
} else if (item.getItemId() == 2) {
appendText("\nitem2");
} else if (item.getItemId() == 3) {
emptyText();
} else if (item.getItemId() == 4) {
// hide secondary
this.appendMenuItemText(item);
this.myMenu.setGroupVisible(Menu.CATEGORY_SECONDARY, false);
} else if (item.getItemId() == 5) {
this.appendMenuItemText(item);
this.myMenu.setGroupVisible(Menu.CATEGORY_SECONDARY, true);
} else if (item.getItemId() == 6) {
this.appendMenuItemText(item);
this.myMenu.setGroupEnabled(Menu.CATEGORY_SECONDARY, true);
} else if (item.getItemId() == 7) {
this.appendMenuItemText(item);
this.myMenu.setGroupEnabled(Menu.CATEGORY_SECONDARY, false);
} else if (item.getItemId() == 8) {
this.appendMenuItemText(item);
this.myMenu.setGroupCheckable(Menu.CATEGORY_SECONDARY, true, false);
} else if (item.getItemId() == 9) {
this.appendMenuItemText(item);
this.myMenu
.setGroupCheckable(Menu.CATEGORY_SECONDARY, false, false);
} else {
this.appendMenuItemText(item);
}
return true;
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
menu.setHeaderTitle("Sample menu");
menu.add(200, 200, 200, "item1");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
this.appendMenuItemText(item);
return true;
}
private void loadXMLMenu(Menu menu) {
MenuInflater inflater = getMenuInflater(); // from activity
inflater.inflate(R.menu.my_menu, menu);
}
private TextView getTextView() {
TextView tv = (TextView) this.findViewById(R.id.textViewId);
return tv;
}
public void appendText(String text) {
TextView tv = (TextView) this.findViewById(R.id.textViewId);
tv.setText(tv.getText() + text);
}
private void appendMenuItemText(MenuItem menuItem) {
String title = menuItem.getTitle().toString();
TextView tv = (TextView) this.findViewById(R.id.textViewId);
tv.setText(tv.getText() + "\n" + title + ":" + menuItem.getItemId());
}
private void emptyText() {
TextView tv = (TextView) this.findViewById(R.id.textViewId);
tv.setText("");
}
}
//main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView android:id="@+id/textViewId"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
</LinearLayout>
//menu/my_menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<!-- This group uses the default category. -->
<group android:id="@+id/menuGroup_Main">
<item android:id="@+id/menu_testPick"
android:orderInCategory="5"
android:title="Test Pick" />
<item android:id="@+id/menu_testGetContent"
android:orderInCategory="5"
android:title="Test Get Content" />
<item android:id="@+id/menu_clear"
android:orderInCategory="10"
android:title="clear" />
<item android:id="@+id/menu_dial"
android:orderInCategory="7"
android:title="dial" />
<item android:id="@+id/menu_test"
android:orderInCategory="4"
android:title="@+string/test" />
<item android:id="@+id/menu_show_browser"
android:orderInCategory="5"
android:title="show browser" />
</group>
</menu>
Related examples in the same category