mardi 15 décembre 2015

How can I prevent this context menu with checkboxes or radio buttons to close on selection?

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