关于Activity无重写方法--菜单项onCreateOptionsMenu

在Android 4.0版本中,`onCreateOptionsMenu`方法被移除,为模拟菜单键功能,开发者需使用`onCreateContextMenu`。此变更影响了菜单项的处理,但上下文菜单的处理方式与之前类似。测试时可通过长按设定按钮展示选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我使用的sdk是4.0版本,测试菜单项时发现无此方法,经查询google已删除菜单键,用onCreateContextMenu来完成模拟,菜单键的处理和上下文菜单的处理方法的格式几乎是一致的,实际操作中也是如此,不再赘述。具体示例如下:

public class MainActivity extends Activity {
    public static final int RED_MENU_ID = Menu.FIRST;
    public static final int GREEN_MENU_ID = Menu.FIRST+1;
    public static final int BLUE_MENU_ID = Menu.FIRST+2;
    private Button colorBtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        colorBtn = (Button)findViewById(R.id.color_button);
        registerForContextMenu(colorBtn);
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {
        // TODO Auto-generated method stub
        menu.add(0, RED_MENU_ID, 0, R.string.color_red);
        menu.add(0, GREEN_MENU_ID, 0, R.string.color_green);
        menu.add(0, BLUE_MENU_ID, 0, R.string.color_blue);

    }
    @Override
    public boolean onContextItemSelected(MenuItem item) {
        // TODO Auto-generated method stub
        super.onContextItemSelected(item);

        switch(item.getItemId()){

        case RED_MENU_ID:
            colorBtn.setBackgroundColor(Color.RED);
            colorBtn.setText(R.string.color_red);
            return true;
        case GREEN_MENU_ID:
            colorBtn.setBackgroundColor(Color.GREEN);
            colorBtn.setText(R.string.color_green);
            return true;
        case BLUE_MENU_ID:
            colorBtn.setBackgroundColor(Color.BLUE);
            colorBtn.setText(R.string.color_blue);
            return true;

        }

        return true;
    }
}   

测试长按设定按钮,显示出选项,这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值