Autore Topic: Evento sulle scelte del Menu  (Letto 1018 volte)

Offline Ivan86

  • Utente junior
  • **
  • Post: 139
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S II
  • Sistema operativo:
    Windows 7
Evento sulle scelte del Menu
« il: 07 Marzo 2011, 11:08:47 CET »
0
Nella mia applicazione ho impostato un Menu a scomparsa (quello che sbuca dopo la pressione del tasto fisico MENU)
Ora vorrei che alla scelta di un'opzione mi rimandi ad un altro file .xml

Ho provato a seguire il libro di Carli, ma li mi fa creare una nuova applicazione che si appoggia sulla prima e io vorrei tutto nella stessa

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:Evento sulle scelte del Menu
« Risposta #1 il: 07 Marzo 2011, 12:23:43 CET »
0
Una nuova app? Ne dubito. Ti fa creare una nuova activity che é una nuova schermata, ed é il modo piú corretto di farlo.
Postate il LogCat LogCat LogCat LogCat LogCat

Offline Ivan86

  • Utente junior
  • **
  • Post: 139
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S II
  • Sistema operativo:
    Windows 7
Re:Evento sulle scelte del Menu
« Risposta #2 il: 07 Marzo 2011, 12:53:34 CET »
0
si è sicuramente una nuova activity, ma io non voglio che mi deve installare una activity a parte.
non è possibile mettere un evento su ogni scelta del menu senza creare activity esterne al progetto?

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:Evento sulle scelte del Menu
« Risposta #3 il: 07 Marzo 2011, 14:25:10 CET »
0
Ma non sono esterne o.O
Le activity le vai a creare tutte nello stesso progetto. Sono tutte parti della stessa applicazione.
Un'activity non é un'app, ma un'app contiene delle activity.
Postate il LogCat LogCat LogCat LogCat LogCat

Offline Ivan86

  • Utente junior
  • **
  • Post: 139
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S II
  • Sistema operativo:
    Windows 7
Re:Evento sulle scelte del Menu
« Risposta #4 il: 07 Marzo 2011, 15:22:16 CET »
0
forse ho spiegato male io prima :-P
so bene che le activity compongono la mia applicazione :)

ma non riesco a impostare un evento sul menu così da rimandarmi ad un'altra activity
il codice del mio menu è questo:
Codice (Java): [Seleziona]
        public boolean onCreateOptionsMenu(Menu menu) {
               
                menu.add(0, 0, 0, "Realtà Aumentata").setIcon(R.drawable.ra);
                menu.add(0, 1, 0, "Vista Mappa").setIcon(R.drawable.mappa);
                menu.add(0, 2, 0, "Mia Posizione").setIcon(R.drawable.posizione);
                menu.addSubMenu(0, 3, 0, "Filtri").setIcon(R.drawable.segnala);
                menu.add(0, 4, 0, "Profilo").setIcon(R.drawable.profilo);
               
                return true;
        }
come faccio a creare un evento su uno dei pulsanti?

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Evento sulle scelte del Menu
« Risposta #5 il: 07 Marzo 2011, 15:24:49 CET »
0
Ti consiglio di leggere la documentazione

Creating Menus | Android Developers

Offline Ivan86

  • Utente junior
  • **
  • Post: 139
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S II
  • Sistema operativo:
    Windows 7
Re:Evento sulle scelte del Menu
« Risposta #6 il: 09 Marzo 2011, 12:38:59 CET »
0
blackgin praticamente stavo vedendo un'altra funzionalità del menu e non quella che effettivamente mi interessava :-P

Ricky` grazie per il link ;)

ho risolto introducendo una semplice Intent:
Codice (Java): [Seleziona]
@Override
        public boolean onCreateOptionsMenu(Menu menu) {
                // Accediamo agli eventuali MenuItem di sistema
                super.onCreateOptionsMenu(menu);
                // Creiamo un Intent di test
                Intent intent = new Intent(this, ProfiloActivity.class);
                Log.i(LOG_TAG, "onCreateOptionsMenu");
                // Impostiamo l'ordine iniziale
                int order = Menu.FIRST;
                // Creiamo il primo gruppo di MenuItem
                int GROUPA = 0;
                menu.add(GROUPA, order, order++, "Profilo").setIntent(intent);
                ...
                // Visualizziamo il Menu
                return true;
        }

@Override
        public boolean onOptionsItemSelected(MenuItem item) {
                Log.i(LOG_TAG, "onOptionsItemSelected Called!");
                if (item.getItemId() == Menu.FIRST) {
                        Log.i(LOG_TAG, "Profilo Selected");
                        return false;
                return super.onOptionsItemSelected(item);
        }
« Ultima modifica: 09 Marzo 2011, 12:42:12 CET da Ivan86 »

Offline Ivan86

  • Utente junior
  • **
  • Post: 139
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S II
  • Sistema operativo:
    Windows 7
Re:Evento sulle scelte del Menu
« Risposta #7 il: 21 Marzo 2011, 18:10:16 CET »
0
Sto avendo dei problemi col Menu.
Ho 6 voci nel mio menu e alcune di queste devono aprire Activity apposite.
Con il codice che ho postato sopra, ProfiloActivity.class parte tranquillamente,
ma non so come fare per far partire le altre..

Ho fatto nel seguente modo, ma non succede niente:
Codice (Java): [Seleziona]
public boolean onCreateOptionsMenu(Menu menu) {
                super.onCreateOptionsMenu(menu);
                // Creiamo un Intent di test
                Intent intentProfilo = new Intent(this, ProfiloActivity.class);
                Intent intent1 = new Intent(this, UnoActivity.class);
                Intent intent2 = new Intent(this, DueActivity.class);
                Intent intent3 = new Intent(this, TreActivity.class);
                Log.i(LOG_TAG, "onCreateOptionsMenu");
                int order = Menu.FIRST;
                int GROUPA = 0;
                menu.add(GROUPA, order, order++, "Uno")
                        .setIntent(intent1)
                        .setIcon(R.drawable.uno);
                menu.add(GROUPA, order, order++, "Due")
                        .setIntent(intent2)
                        .setIcon(R.drawable.due);
                // Esempio di gestione degli eventi con Listener
                menu.add(GROUPA, order, order++, "Tre")
                        .setIntent(intent3)
                        .setIcon(R.drawable.tre);
               
                // Aggiungiamo un sottomenu
                int subGroupId = 10;
                SubMenu subMenu = menu.addSubMenu(subGroupId, order, order++, "Segnalazioni");
                        subMenu.add(subGroupId + 2, 0, 0, "Mie Segnalazioni");
                        subMenu.add(subGroupId + 2, 0, 0, "Segnalazioni Altrui");
                        subMenu.add(subGroupId + 2, 0, 0, "Tutte le Segnalazioni");
                        subMenu.setGroupCheckable(subGroupId + 2, true, true);
                        subMenu.setIcon(R.drawable.segnala);

                menu.add(GROUPA, order, order++, "Profilo")
                        .setIntent(intentProfilo)
                        .setIcon(R.drawable.profilo);
                menu.add(GROUPA, order, order++, "Esci").setIcon(R.drawable.esci);
                // Visualizziamo il Menu
                return true;
        }

        @Override
        public boolean onPrepareOptionsMenu(Menu menu) {
                super.onPrepareOptionsMenu(menu);
                Log.i(LOG_TAG, "onPrepareOptionsMenu");
                return true;
        }

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
                Log.i(LOG_TAG, "onOptionsItemSelected Called!");
                if (item.getItemId() == Menu.FIRST) {
                        Log.i(LOG_TAG, "Uno Selected");
                        return true;
                } else if (item.getItemId() == Menu.FIRST + 1) {
                        Log.i(LOG_TAG, "Due Selected");
                        return true;
                } else if (item.getItemId() == Menu.FIRST + 2) {
                        Log.i(LOG_TAG, "Tre Selected");
                        return true;
                } else if (item.getItemId() == Menu.FIRST + 3) {
                        Log.i(LOG_TAG, "Segnalazione Selected");
                        return true;
                } else if (item.getItemId() == Menu.FIRST + 4) {
                        Log.i(LOG_TAG, "Profilo Selected");
                        return false;
                } else if (item.getItemId() == Menu.FIRST + 5) {
                        Log.i(LOG_TAG, "Esci Selected");
                        return true;
                }
               
                Log.i(LOG_TAG, "onPrepareOptionsMenu " + item.getTitle());
                item.setChecked(!item.isChecked());

                return super.onOptionsItemSelected(item);
        }

in teoria le Intent: intentUno, intentDue, intentTre, intentProfilo dovrebbero aprire una nuova activity..

dove sbaglio?

frusso

  • Visitatore
Re:Evento sulle scelte del Menu
« Risposta #8 il: 21 Marzo 2011, 18:15:57 CET »
0
Nel metodo onCreateOptionMenu devi solo creare i menu (assegnargli un ID, untesto ed una icona) e NON creare le activity

nel metodo onOptionsItemSelected attraverso il metodo getItemId recuperi l' ID della voce di menù selezionato, crei l'activity e la lanci.

Cmq guarda che sul libro di carli c'è tutto. Dagli una lettura più attenta e ti accorgerai dell'errore.  :-P


Offline Ivan86

  • Utente junior
  • **
  • Post: 139
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S II
  • Sistema operativo:
    Windows 7
Re:Evento sulle scelte del Menu
« Risposta #9 il: 21 Marzo 2011, 22:30:20 CET »
0
E' stato proprio il Carli a confondermi le idee... :-S
ora sembrerebbe funzionare