废话少说,请看代码,外加有详细的注释
package cn.chen.menu;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
public class MenuActivity extends Activity {
private static final String TAG = "MenuActivity";
private static final int MENU_ADD = Menu.FIRST;
private static final int MENU_UPDATE = Menu.FIRST + 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView textView = (TextView)findViewById(R.id.ids);
textView.setOnCreateContextMenuListener(this); //为控件安装上下文
}
//创建上下文菜单
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
getMenuInflater().inflate(R.menu.content_menu, menu);
super.onCreateContextMenu(menu, v, menuInfo);
}
//上下文菜单响应
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.edit:
setTitle("context编辑");
break;
case R.id.delete:
setTitle("context删除");
break;
default:
break;
}
return super.onContextItemSelected(item);
}
/** 只有当Menu菜单首次被显示时会调用此方法 */
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//xml添加menu
getMenuInflater().inflate(R.menu.menu, menu);
//代码添加menu
/**
* menu.add(int groupId, int itemId, int order, CharSequence title)
* groupId为组ID,这里用不到,所以设置成Menu.NONE
* itemId为项ID,当命令被点击时,要区别点击的命令,所以设置以不同的ID
* order为排列次序,值越小排的越前(不能为负数),这里按添加顺序排,所以也设置成Menu.NONE
* title为要显示的命令名称
*/
menu.add(Menu.NONE, MENU_ADD, Menu.NONE, "添加");
menu.add(Menu.NONE, MENU_UPDATE, Menu.NONE, "更新");
return super.onCreateOptionsMenu(menu);
}
/** 当每次Menu显示时,会调用此方法 此例中没用到*/
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
return super.onPrepareOptionsMenu(menu);
}
/** 当Menu有命令被选择时,会调用此方法 */
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_item_add:
setTitle("xml添加");
return true;
case R.id.menu_item_update:
setTitle("xml更新");
return true;
case MENU_ADD:
setTitle("手动添加");
return true;
case MENU_UPDATE:
setTitle("手动更新");
return true;
default:
return super.onMenuItemSelected(featureId, item);
}
}
/** 当每次Menu关闭时,会调用此方法 此例中没用到*/
@Override
public void onOptionsMenuClosed(Menu menu) {
super.onOptionsMenuClosed(menu);
}
}
res/menu/menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_item_add"
android:title="@string/add"
android:icon="@drawable/icon"/>
<item android:id="@+id/menu_item_update"
android:title="@string/update"
android:icon="@drawable/icon"/>
</menu>
res/menu/content_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/edit"
android:title="@string/edit"
android:icon="@drawable/icon"/>
<item android:id="@+id/delete"
android:title="@string/delete"/>
</menu>