普通菜单和上下文菜单

普通菜单
  • 创建
    • 在res/menu下创建menu_main.xml文件(相关配置)
      普通菜单和上下文菜单_第1张图片
    • 在men_main.xml文件中加入需要的菜单

  • 重写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

你可能感兴趣的:(普通菜单和上下文菜单)