packagecom.evor.test;importandroid.content.Intent;importandroid.os.Bundle;importandroid.support.v7.app.ActionBarActivity;importandroid.view.ContextMenu;importandroid.view.ContextMenu.ContextMenuInfo;importandroid.view.Menu;importandroid.view.MenuItem;importandroid.view.MenuItem.OnMenuItemClickListener;importandroid.view.SubMenu;importandroid.view.View;importandroid.widget.Button;importandroid.widget.EditText;importandroid.widget.Toast;public class MainActivity extendsActionBarActivity {
@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn1=(Button)findViewById(R.id.btn1);
EditText edt1=(EditText)findViewById(R.id.edt1);//注册上下文菜单(按住该视图一段时间后就会出现menu)
registerForContextMenu(btn1);
registerForContextMenu(edt1);
}//实现选项菜单
@Overridepublic booleanonCreateOptionsMenu(Menu menu) {//参数: groupid,itemid,order,titleRes
MenuItem item1 = menu.add(1,1,1,"菜单项1");
MenuItem item2= menu.add(1,2,2,"菜单项2");
MenuItem item3= menu.add(1,3,3,"菜单项3");
item3.setIntent(new Intent(this,MainActivity.class)); //设定关联的Activity,点击后会转到该activity
MyOnMenuItemClickListener menuItemClickListener= newMyOnMenuItemClickListener();
item1.setOnMenuItemClickListener(menuItemClickListener);
item2.setOnMenuItemClickListener(menuItemClickListener);
item3.setOnMenuItemClickListener(menuItemClickListener);//添加子菜单
SubMenu fileSubMenu = menu.addSubMenu(1,4,4,"文件");
MenuItem submenuItem1= fileSubMenu.add(1,5,2,"新建");
MenuItem submenuItem2= fileSubMenu.add(2,6,3,"打开");
MenuItem submenuItem3= fileSubMenu.add(2,7,4,"退出");
submenuItem1.setCheckable(true); //设置为多选框
submenuItem2.setChecked(false); //设置是否被勾选
submenuItem3.setChecked(true); //设置是否被勾选
fileSubMenu.setGroupCheckable(2, true, true); //第三参数确定为单选还是多选
return true;
}//内部类--选项菜单的菜单项响应类
private class MyOnMenuItemClickListener implementsOnMenuItemClickListener{
@Overridepublic booleanonMenuItemClick(MenuItem item) {switch(item.getItemId()){case 1 : {Toast.makeText(MainActivity.this, "点击了菜单项1", Toast.LENGTH_SHORT).show(); break;}case 2 : {Toast.makeText(MainActivity.this, "点击了菜单项2", Toast.LENGTH_SHORT).show(); break;}case 3 : {Toast.makeText(MainActivity.this, "点击了菜单项3", Toast.LENGTH_SHORT).show(); break;}
}return true;
}
}//上下文菜单的回调函数
@Overridepublic voidonCreateContextMenu(ContextMenu menu,View view,ContextMenuInfo menuInfo){super.onCreateContextMenu(menu, view, menuInfo);
menu.setHeaderTitle("上下文菜单");int itemid = 0;
menu.add(0,itemid++, Menu.NONE, "菜单项1");
menu.add(0,itemid++, Menu.NONE, "菜单项2");
menu.add(0,itemid++, Menu.NONE, "菜单项3");
SubMenu subMenu= menu.addSubMenu("子菜单");
subMenu.add("选项1");
subMenu.add("选项2");
}//菜单事件
@Overridepublic booleanonPrepareOptionsMenu(Menu menu){//在显示选项菜单之前被调用,一般可用来修改即将显示的选项菜单
super.onPrepareOptionsMenu(menu);return true;
}
@Overridepublic voidonOptionsMenuClosed(Menu menu){//在关闭选项菜单时被调用
super.onOptionsMenuClosed(menu);
}
@Overridepublic voidonContextMenuClosed(Menu menu) {//在关闭上下文菜单时调用
super.onContextMenuClosed(menu);
}
@Overridepublic boolean onMenuOpened(intfeatureId, Menu menu) {//在显示选项菜单之前调用,该方法在onPrepareOptionsMenu方法之后调用
return super.onMenuOpened(featureId, menu);
}
}