Autore Topic: Aiuto... i settaggi sui submenu non mi rimangono selezionati  (Letto 576 volte)

Offline n3tmaster

  • Utente junior
  • **
  • Post: 96
  • Respect: 0
    • Google+
    • lerocchi
    • Mostra profilo
  • Dispositivo Android:
    Nexus 4 - Nexus 7 - PadFone JB
  • Sistema operativo:
    Mac OSX 10.7
Aiuto... i settaggi sui submenu non mi rimangono selezionati
« il: 10 Aprile 2012, 12:06:59 CEST »
0
Salve a tutti ho un problema con il mantenimento della selezione fatta su alcuni submenu che ho creato.

questo è il codice per la creazione dei submenu
Codice (Java): [Seleziona]
public boolean onCreateOptionsMenu(Menu menu) {
                // Accediamo agli eventuali MenuItem di sistema
                super.onCreateOptionsMenu(menu);
               
                Log.i(LOG_TAG, "onCreateOptionsMenu");
                SubMenu mapSubMenu = menu.addSubMenu("Google Maps");
                mapSubMenu.setIcon(android.R.drawable.ic_menu_mapmode);
               
                subMenu=new MenuItem[4];
               
               
                int firstItem = Menu.FIRST;
                subMenu[0] = mapSubMenu.add(1, firstItem, firstItem,
                                "Satellite Map").setCheckable(true);
                subMenu[1] = mapSubMenu.add(2, firstItem + 1,
                                firstItem + 1, "Porta in primo piano");
                subMenu[2] = mapSubMenu.add(2, firstItem +2 ,
                                firstItem + 2, "Porta in secondo piano");
                subMenu[3] = mapSubMenu.add(2, firstItem +3 ,
                                firstItem +3, "Disattiva Google Map");
       
                mapSubMenu.setGroupCheckable(2,true,true);
                subMenu[3].setChecked(true);
                mapSubMenu.setHeaderIcon(android.R.drawable.ic_menu_mapmode);
                mapSubMenu.setHeaderTitle(R.string.gmap);
               
                menu.add(0, firstItem + 4, firstItem +4, getResources().getString(R.string.about)).setOnMenuItemClickListener(
                                new OnMenuItemClickListener() {

                                        @Override
                                        public boolean onMenuItemClick(MenuItem menuItem) {
                                                Log.i(LOG_TAG, "onMenuItemClick "+ menuItem.getTitle());
                                                startActivity(menuItem.getIntent());
                                               
                                                return true;
                                        }

                                }).setIntent(new Intent(this, CreditsActivity.class));
               

                return true;
        }

come potete notare ho creato due menu di cui uno richiama un submenu e il submenu è composto da tre voci raggruppate (come Radio button) e una come semplice checked.

Qui di seguito effettuo le operazioni specifiche a seconda di cosa ho selezionato
Codice (Java): [Seleziona]
public boolean onOptionsItemSelected(MenuItem item) {
                Log.i(LOG_TAG, "onOptionsItemSelected Called!");
       
                switch (item.getItemId()) {
                case Menu.FIRST :
                        Log.i(LOG_TAG,"set satellite");
                        miaMapView.setSatellite(!item.isChecked());
                       
                        if(item.isChecked()==true){
                                item.setChecked(true);
                               
                        }else{
                                item.setChecked(false);
                        }
                        imgView.invalidate();
                        if(subMenu[1].isChecked())
                                showMapView(1,zoomLevel);
                        else if(subMenu[2].isChecked())
                                showMapView(-1, zoomLevel);
                        return true;
                       
                case Menu.FIRST +1:
                        Log.i(LOG_TAG,"primo piano");
                        showMapView(1,zoomLevel);
                               
                        return true;
                       
                case Menu.FIRST + 2:
                        Log.i(LOG_TAG,"primo piano");
                        showMapView(-1,zoomLevel);
               
                        return true;
                       
                case Menu.FIRST + 3:
                        Log.i(LOG_TAG,"no gmap");
                        imgView.setMapMode(false);
                        imgView.invalidate();
                       
                        return true;
               
               
                }
                // Importante richiamare l'implementazione padre nel caso
                // di item non gestiti
                return super.onOptionsItemSelected(item);
        }

tutto funziona perfettamente se non fosse che ogni volta che riapro il sotto menu, non mi appaiono le selezioni precedentemente effettuate... come mai?
Grazie a tuttiiiiiii

Leandro Rocchi
Software Developer - Geodatabase Designer