CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: 9mm con ben 3 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 8 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 29 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 7 su 7
Discussione:

Eccezione durante scorrimento ListView

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Androidiano VIP L'avatar di ultrasound91


    Registrato dal
    Jul 2014
    Località
    Lecce
    Messaggi
    2,725
    Smartphone
    HTC One M7

    Ringraziamenti
    90
    Ringraziato 532 volte in 496 Posts
    Predefinito

    Eccezione durante scorrimento ListView

    Ho un programma con un activity principale e una secondaria.
    L'activity principale contiene una lista di opzioni, e a seconda di quale si sceglie, la listview contenuta nell'activity secondaria mostra delle righe diverse.
    Il problema si verifica quando nell'activity secondaria premo il tasto back dopo aver eseguito la gesture per far scorrere la lista verso l'alto o il basso.
    Se premo il tasto back mentre la listview si sta muovendo si verifica l'eccezione, se lo premo quando la lista è ferma il programma torna correttamente nell'activity principale.
    Per tasto back intendo proprio il softkey fisico.
    L'eccezione è la seguente: java.lang.IndexOutOfBoundsException: Invalid index 99, size is 0.
    L'index è diverso a seconda della posizione in cui si trova la lista al momento della pressione del tasto.
    Chiedo aiuto.

  2.  
  3. #2
    Androidiano


    Registrato dal
    Apr 2011
    Località
    Lodi
    Messaggi
    256
    Smartphone
    Samsung S2, Nexus 5

    Ringraziamenti
    5
    Ringraziato 32 volte in 31 Posts
    Predefinito

    Ciao posti il codice dell'adapter?
    hai provato a chiudere l'activity secondaria con un finish intercettando il tasto back?

    Nik
    Vedo tutto attraverso sabbia rossa e deserto...


  4. #3
    Androidiano VIP L'avatar di ultrasound91


    Registrato dal
    Jul 2014
    Località
    Lecce
    Messaggi
    2,725
    Smartphone
    HTC One M7

    Ringraziamenti
    90
    Ringraziato 532 volte in 496 Posts
    Predefinito

    Nel frattempo ho fatto un pò di analisi del mio codice.
    Ho verificato come si evolve il ciclo di vita delle activity.
    Per comodità chiamiamo A l'activity principale e B quella secondaria.
    Quando premo il tasto back e la lista non sta scorrendo si verificano i seguenti eventi:
    B: Pause
    A: Resume
    B: Stop
    B: Destroy
    Quando la lista sta scorrendo e premo il tasto back:
    B: Pause
    A: Resume
    E poi si verifica l'eccezione, che riguarda l'adapter dell'activity secondaria, come se la lista associata fosse stata cancellata (perchè dice size is 0).
    C'è qualche buona norma che prevede di intercettare la pressione del tasto back?
    Eventualmente posto il codice.

  5. #4
    Androidiano


    Registrato dal
    Apr 2011
    Località
    Lodi
    Messaggi
    256
    Smartphone
    Samsung S2, Nexus 5

    Ringraziamenti
    5
    Ringraziato 32 volte in 31 Posts
    Predefinito



    prova a metterci dentro SECONDAACTIVITY.this.finish();

    cosi:


    Vedo tutto attraverso sabbia rossa e deserto...


  6. #5
    Androidiano VIP L'avatar di ultrasound91


    Registrato dal
    Jul 2014
    Località
    Lecce
    Messaggi
    2,725
    Smartphone
    HTC One M7

    Ringraziamenti
    90
    Ringraziato 532 volte in 496 Posts
    Predefinito

    Fatto, ma non ha funzionato.
    Al momento sto cercando una risposta teorica, cioè voglio capire su cosa influisce lo scorrimento.

  7. #6
    Androidiano


    Registrato dal
    Apr 2011
    Località
    Lodi
    Messaggi
    256
    Smartphone
    Samsung S2, Nexus 5

    Ringraziamenti
    5
    Ringraziato 32 volte in 31 Posts
    Predefinito

    rilegge il tuo array/lista e se ti da index 99 e il sizeè 0 c'è qualcosa che non va nell'adapter (cioè è arrivato a contare 99 elementi ma quando controlla l'array lo trova vuoto)

    Ciao
    Nik
    Vedo tutto attraverso sabbia rossa e deserto...


  8. #7
    Androidiano VIP L'avatar di ultrasound91


    Registrato dal
    Jul 2014
    Località
    Lecce
    Messaggi
    2,725
    Smartphone
    HTC One M7

    Ringraziamenti
    90
    Ringraziato 532 volte in 496 Posts
    Predefinito

    Ho risolto.
    Nel metodo onResume dell'activity principale c'era un metodo che cancella la lista associata all'adapter dell'activity secondaria.
    Da quanto ho capito, se la listView sta scorrendo è richiesto che la lista di dati associata esista.
    Quindi quando termina il resume dell'activity principale, quella secondaria non è visibile ma sta ancora scorrendo.
    E se la lista è stata svuotata allora si verifica quell'eccezione.
    Ho risolto spostando il richiamo al metodo .clear della lista in un punto più opportuno.
    Quindi bisogna tener sempre conto delle dipendenze che creano le GUI di qualsiasi libreria con le strutture dati.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy