我使用的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;
}
}
测试长按设定按钮,显示出选项,