In the Android app I'm creating, there are two buttons which open a context menu, one made by checkboxes and the other by radio buttons. How can I manage them to prevent the closing of the menu when I select them? Here's the code:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button check = (Button) findViewById(R.id.CheckboxMenu);
Button radio = (Button) findViewById(R.id.RadioMenu);
registerForContextMenu(check);
registerForContextMenu(radio);
}
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
if (v.getId() == R.id.CheckboxMenu) {
menu.setHeaderTitle("Menu checkbox");
menu.setGroupEnabled(2, true);
menu.setGroupVisible(2, true);
menu.add(2, 5, Menu.NONE, "Opzione 1");
menu.add(2, 6, Menu.NONE, "Opzione 2");
menu.add(2, 7, Menu.NONE, "Opzione 3");
menu.setGroupCheckable(2, true, false);
}
if (v.getId() == R.id.RadioMenu) {
menu.setHeaderTitle("Menu radio");
menu.setGroupEnabled(3, true);
menu.setGroupVisible(3, true);
menu.add(3, 8, Menu.NONE, "Opzione 1");
menu.add(3, 9, Menu.NONE, "Opzione 2");
menu.add(3, 10, Menu.NONE, "Opzione 3");
menu.setGroupCheckable(3, true, true);
}
}
public boolean onContextItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case 5:
if(item.isChecked()) {
item.setChecked(true);
} else {
item.setChecked(false);
}
break;
case 6:
if(item.isChecked()) {
item.setChecked(true);
} else {
item.setChecked(false);
}
break;
case 8:
if(item.isChecked()) {
item.setChecked(true);
} else {
item.setChecked(false);
}
break;
case 7:
if(item.isChecked()) {
item.setChecked(true);
} else {
item.setChecked(false);
}
break;
case 9:
if(item.isChecked()) {
item.setChecked(false);
} else {
item.setChecked(true);
}
break;
case 10:
if(item.isChecked()) {
item.setChecked(false);
} else {
item.setChecked(true);
}
break;
}
return false;
}
@Override
public void onContextMenuClosed(Menu menu) {
Toast.makeText(this, "Closed Menu", Toast.LENGTH_SHORT).show();
}
I'm using API 8 2.2 as minimum SDK and API 20 4.4W.2 as target
Aucun commentaire:
Enregistrer un commentaire