普通菜单
- 创建
- 在res/menu下创建menu_main.xml文件(相关配置)
- 在men_main.xml文件中加入需要的菜单
- 在res/menu下创建menu_main.xml文件(相关配置)
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="@string/action_settings"
app:showAsAction="never" />
- 重写2个方法
- onCreateOptionMenu()
- onOptionItemSelect()
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.one:
Toast.makeText(MainActivity.this, "one", Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}
在actionBar上显示
上下文菜单
- 注册上下文菜单
registerForContextMenu(lv);//为ListView添加上下文菜单
- 重写2个方法onCreateContextMenu(),onContextItemSelected()
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub
try {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
JSONObject object = mData.getJSONObject(info.position);
menu.setHeaderTitle(object.getString("title"));
} catch (Exception e) {
return;
}
menu.add(0, 1, 0, "删除该聊天"); //menu组,menu组内id,项目顺序
menu.add(0, 2, 0, "置顶聊天");
super.onCreateContextMenu(menu, v, menuInfo);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
// TODO Auto-generated method stub
AdapterContextMenuInfo itemInfo = (AdapterContextMenuInfo) item.getMenuInfo();
try {
JSONObject object = mData.getJSONObject(itemInfo.position);
switch (item.getItemId()) {
case 1:
Toast.makeText(this, object.getString("title"), Toast.LENGTH_LONG).show();
break;
default:
break;
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return super.onContextItemSelected(item);
}
异同:
-
普通菜单
- 不需要注册,单机即可触发
- 属于整个activity
-
上下文菜单
- 需要调用注册方法
- 长按触发
- 属于注册时候传入的view