美文网首页
普通菜单和上下文菜单

普通菜单和上下文菜单

作者: MC_Honva | 来源:发表于2017-02-18 10:55 被阅读176次
    普通菜单
    • 创建
      • 在res/menu下创建menu_main.xml文件(相关配置)
      • 在men_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

    相关文章

      网友评论

          本文标题:普通菜单和上下文菜单

          本文链接:https://www.haomeiwen.com/subject/qtmrwttx.html