Autore Topic: ListView non fa comparire il menu  (Letto 717 volte)

Offline zerocool87

  • Utente junior
  • **
  • Post: 131
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    Htc Legend
  • Sistema operativo:
    Ubuntu 10.04
ListView non fa comparire il menu
« il: 01 Novembre 2010, 16:57:01 CET »
0
Ho un problema con una listview. Ho utilizzato il tutorial di Ricky come base per una listview Custom facendo delle piccole modifiche.

Avvengono 2 cose strane.

1) una volta visualizzata la listview non funziona più il tasto menu (non mi si apre più il menu contestuale dell'applicazione)
2) se clicco sull'edittext che ho in fondo alla pagina (quindi si prende il focus) non si apre il menu contestuale alla pressione del tasto menu.

Per essere più preciso non viene proprio invocato il metodo onPrepareOptionsMenu (l'ho utilizzo per creare menu differenti in base alle necessità), nè tantomeno il metodo onCreateOptionsMenu

Qualche idea di come risolvere?

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:ListView non fa comparire il menu
« Risposta #1 il: 01 Novembre 2010, 17:04:49 CET »
0
Qualche idea di come risolvere?

Senza codice direi proprio di no.

Offline zerocool87

  • Utente junior
  • **
  • Post: 131
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    Htc Legend
  • Sistema operativo:
    Ubuntu 10.04
Re:ListView non fa comparire il menu
« Risposta #2 il: 02 Novembre 2010, 01:09:08 CET »
0
aggiungo il codice ;)

Questo è il codice che utilizzo nella mia activity group. nelle activity che vengono visualizzate di volta in volta invoco un metodo dell'activitygroup che modifica la variabile submenu in modo da avere sempre il menu corretto.

Codice (Java): [Seleziona]
        @Override
        public boolean onPrepareOptionsMenu(Menu menu) {

                menu.clear();
               
                if(submenu==1){
                       
                menu.add(1, menuRefresh, 0, myApp.getString(getApplicationContext(), "menuRefresh")).setIcon(R.drawable.aggiorna);
                menu.add(1, menuCompose, 0, myApp.getString(getApplicationContext(), "menuSend")).setIcon(R.drawable.send_message);

                }
                else if(submenu==2){
                       
                        menu.add(1, menuRefresh2, 0, myApp.getString(getApplicationContext(), "menuRefresh2")).setIcon(R.drawable.aggiorna);
                       
                }


                return super.onCreateOptionsMenu(menu);
        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {

                MenuInflater inflater = getMenuInflater();

                inflater.inflate(R.menu.menu_chat, menu);

                super.onCreateOptionsMenu(menu);

                return true;

        }


Ho utilizzato questa soluzione in quanto utilizzo un'activity group con delle activity child.


Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:ListView non fa comparire il menu
« Risposta #3 il: 02 Novembre 2010, 01:25:23 CET »
0
Non so se può essere quello l'errore ma:

-nell'onPrepareOptionsMenu a un certo punto chiami l'onCreateOptionsMenu
-nell'onCreateOptionsMenu di solito si fa un return super.onCreateOptionsMenu(menu);


Offline zerocool87

  • Utente junior
  • **
  • Post: 131
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    Htc Legend
  • Sistema operativo:
    Ubuntu 10.04
Re:ListView non fa comparire il menu
« Risposta #4 il: 02 Novembre 2010, 01:36:22 CET »
0
Non so se può essere quello l'errore ma:

-nell'onPrepareOptionsMenu a un certo punto chiami l'onCreateOptionsMenu
-nell'onCreateOptionsMenu di solito si fa un return super.onCreateOptionsMenu(menu);

il problema sorge solamente dopo il caricamento della listview o quando l'edittext si prende il focus.
Il metodo onPrepareOptionsMenu non viene proprio invocato in questo caso.

La seconda cosa è indifferente in quanto il risultato non cambia (in ogni caso il super.onCreateOptionsMenu viene invocato lo stesso)

Per lquanto riguarda la prima cosa il metodo onPrepare è necessario per modificare di volta in volta il menu e invoco direttamente il metodo onCreateOptionsMenu in quanto è quest'ultimo che provvede a creare il menu (ho seguito un tutorial online )

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:ListView non fa comparire il menu
« Risposta #5 il: 02 Novembre 2010, 01:38:13 CET »
0
Per lquanto riguarda la prima cosa il metodo onPrepare è necessario per modificare di volta in volta il menu e invoco direttamente il metodo onCreateOptionsMenu in quanto è quest'ultimo che provvede a creare il menu (ho seguito un tutorial online )

Si ok ma non devi invocarci dentro onCreateOptionsMenu. Devi fare super.onPrepareOptionsMenu

Comunque oltre a queste due puntualizzazioni di più non saprei dirti, sorry.

Offline zerocool87

  • Utente junior
  • **
  • Post: 131
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    Htc Legend
  • Sistema operativo:
    Ubuntu 10.04
Re:ListView non fa comparire il menu
« Risposta #6 il: 02 Novembre 2010, 01:43:19 CET »
0
per escludere anche questo problema ho provato a fare entrambe le cose che hai detto, ma il risultato è identico.

Avendo inserito il log ogni qual volta viene invocato il metoto onPrepare oppure onCreate, mi rendo conto che dopo la visualizzazione della listview questi non vengono invocati nonostante la pressione del tasto menu...

Offline zerocool87

  • Utente junior
  • **
  • Post: 131
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    Htc Legend
  • Sistema operativo:
    Ubuntu 10.04
Re:ListView non fa comparire il menu
« Risposta #7 il: 02 Novembre 2010, 01:51:45 CET »
0
ho capito che il problema è legato sicuramente all'activitygroup

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:ListView non fa comparire il menu
« Risposta #8 il: 02 Novembre 2010, 01:52:38 CET »
0
ho capito che il problema è legato sicuramente all'activitygroup

Sicuramente si. Io però non conosco molto bene la materia percui passo la palla a qualcun'altro.

Offline zerocool87

  • Utente junior
  • **
  • Post: 131
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    Htc Legend
  • Sistema operativo:
    Ubuntu 10.04
Re:ListView non fa comparire il menu
« Risposta #9 il: 02 Novembre 2010, 01:55:19 CET »
0
Sicuramente si. Io però non conosco molto bene la materia percui passo la palla a qualcun'altro.

il problema è che è possibile definire il menu solamente nell'activity group e non nelle activity child, neache il metodo onKeyDown viene ridefinito nelle activity child.

Offline zerocool87

  • Utente junior
  • **
  • Post: 131
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    Htc Legend
  • Sistema operativo:
    Ubuntu 10.04
Re:ListView non fa comparire il menu
« Risposta #10 il: 02 Novembre 2010, 02:46:38 CET »
0
Come tante altre cose assurde che avvengono con Android la risoluzione di questa è più che assurda....

è bastato fare l'override del seguente metodo lasciandolo quasi in bianco.....


Codice (Java): [Seleziona]
        @Override
        public boolean onKeyUp(int keyCode, KeyEvent event) {
                this.getCurrentFocus();
                if(keyCode==KeyEvent.KEYCODE_HOME){

                       

                }

                return super.onKeyUp(keyCode, event);
        }