Autore Topic: problema con back button  (Letto 805 volte)

Offline Ansem

  • Utente junior
  • **
  • Post: 107
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC HD2
  • Sistema operativo:
    4.0.4
problema con back button
« il: 27 Settembre 2012, 12:33:41 CEST »
0
Salve a tutti,come da titolo ho un problema con il backbutton :/
in pratica io ho un'app così strutturata:
-pagina di login
-pagina principale da cui  posso scegliere dove andare
-altre 4 pagine

in una di queste 4 pagine utilizzo spesso la funzione di ricarica per farmi mandare le nuove informazioni dal server. il problema è che premendo il tasto indietro mi ricarica la versione precedente,faccio un esempio:
-server mi invia 1,2,3,4
-cancello 3
-il server mi manda la pagina aggiornata facendomi vedere 1,2,4
-premo indietro e rivedo 1,2,3,4
-premo ancora e torno alla main

io invece vorrei che andasse direttamente alla pagina principale,come posso fare?

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:problema con back button
« Risposta #1 il: 27 Settembre 2012, 12:45:26 CEST »
0
Citazione
io invece vorrei che andasse direttamente alla pagina principale,come posso fare?
Il tuto dipende da come stai gestendo lo stack.

Per esempio: quando arrivano gli aggiornamenti dal server cosa fai? se aggiorni dei dati e notifichi ad un adapter la cosa (ipotesi), non vedo perchè il back dovrebbe rovinarti la festa....Se invece lanci una nuova Activity, o istanzi un nuovo Fragment al posto di quello vecchio....aggiungi robe allo stack, e quando premi back te le ritrovi  :-)

Offline Ansem

  • Utente junior
  • **
  • Post: 107
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC HD2
  • Sistema operativo:
    4.0.4
Re:problema con back button
« Risposta #2 il: 27 Settembre 2012, 12:55:20 CEST »
0
Il tuto dipende da come stai gestendo lo stack.

Per esempio: quando arrivano gli aggiornamenti dal server cosa fai? se aggiorni dei dati e notifichi ad un adapter la cosa (ipotesi), non vedo perchè il back dovrebbe rovinarti la festa....Se invece lanci una nuova Activity, o istanzi un nuovo Fragment al posto di quello vecchio....aggiungi robe allo stack, e quando premi back te le ritrovi  :-)
funziona così
-dico al server cosa devo cancellare
-richiamo l'activity
-l'activity chiede al server la lista aggiornata e la visualizza

quindi richiamando più volte l'activity per far recuperare i dati aggiornati quando premo back mi manda all'activity precedente
P.S. lo so che è un metodo molto ortodosso ma era la mia prima applicazione XD

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:problema con back button
« Risposta #3 il: 27 Settembre 2012, 13:03:38 CEST »
0
funziona così
-dico al server cosa devo cancellare
-richiamo l'activity
-l'activity chiede al server la lista aggiornata e la visualizza

quindi richiamando più volte l'activity per far recuperare i dati aggiornati quando premo back mi manda all'activity precedente
P.S. lo so che è un metodo molto ortodosso ma era la mia prima applicazione XD

Eh si, se fai così continui ad impilare nello stack delle activity nuove istanze della stessa classe activity; il back fa il suo sporco lavoro e torna indietro alla precedente istanza di activity che trova nello stack.
Quest'errore lo commetto pure io ancora adesso per la fretta :-)
Ti conviene ripensare la gestione, in modo da aggiornare l'istanza che richiede la cancellazione invece di rilanciare l'activity.

Offline Ansem

  • Utente junior
  • **
  • Post: 107
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC HD2
  • Sistema operativo:
    4.0.4
Re:problema con back button
« Risposta #4 il: 27 Settembre 2012, 13:45:50 CEST »
0
intendi di cancellare l'activity precedente quando la richiamo? o semplicemente riuscire a ricaricare l'elenco senza aggiornare l'activity?

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:problema con back button
« Risposta #5 il: 27 Settembre 2012, 13:58:18 CEST »
0
intendi di cancellare l'activity precedente quando la richiamo? o semplicemente riuscire a ricaricare l'elenco senza aggiornare l'activity?

Ricaricare l'elenco mostrato nell'activity (magari spostando l'operazione  di caricamento, che presumo fai nell'onCreate o nell'onResume, in un metodo separato da richiamare all'occorrenza dopo aver mandato le cancellazioni al server).
Gestire a mano libera lo stack delle activity è sempre una pessima idea, perché di fatto si cerca di modificare il comportamento standard del sistema.

Offline Ansem

  • Utente junior
  • **
  • Post: 107
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC HD2
  • Sistema operativo:
    4.0.4
Re:problema con back button
« Risposta #6 il: 27 Settembre 2012, 14:03:50 CEST »
0
Ricaricare l'elenco mostrato nell'activity (magari spostando l'operazione  di caricamento, che presumo fai nell'onCreate o nell'onResume, in un metodo separato da richiamare all'occorrenza dopo aver mandato le cancellazioni al server).
Gestire a mano libera lo stack delle activity è sempre una pessima idea, perché di fatto si cerca di modificare il comportamento standard del sistema.
capito,pensavo esistesse un metodo per andare direttamente ad una certa activity tramite il pulsante back. a questo punto vedrò come fare per caricare solo la lista :)

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:problema con back button
« Risposta #7 il: 27 Settembre 2012, 14:29:55 CEST »
0
capito,pensavo esistesse un metodo per andare direttamente ad una certa activity tramite il pulsante back.

C'è sicuramente da qualche parte, ma perché andarsi ad inerpicare sulla gestione dello stack activity (che il sistema fa già di suo gratis) quando basta molto meno?  ;-)
Do It Simple

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:problema con back button
« Risposta #8 il: 27 Settembre 2012, 14:42:56 CEST »
0
Dovresti secondo me gestire la cosa in modo standard, andando a salvare lo stato dell'activity prima che questa venga chiusa, per poi farne il restore una volta riaperta.
Questo ti salva anche da eventuali problemi dovuti a un cambio di configurazione (vedi rotazione dello schermo), dove l'activity viene distrutta e ricreata.

Nel mio caso ho fatto in questo modo. La variabile mCurrentState indica in quale stato si trova l'activity (a me dice quali pulsanti devo attivare/disattivare):

Codice (Java): [Seleziona]
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        outState.putInt("state", mCurrentState);
        super.onSaveInstanceState(outState);
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        int state = savedInstanceState.getInt("state");
        if (state != STATE_INITIAL) {
            changeState(state);
        }
        super.onRestoreInstanceState(savedInstanceState);
    }

nel metodo changeState modifico l'interfaccia in base allo stato.

Offline Ansem

  • Utente junior
  • **
  • Post: 107
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC HD2
  • Sistema operativo:
    4.0.4
Re:problema con back button
« Risposta #9 il: 27 Settembre 2012, 17:48:37 CEST »
0
allora attualmente io una listactivity dove durante l'oncreate popolo la lista,su ogni elemento c'è poi un listener in modo da inviare al server quale elemento voglio eliminare,dopo aver inviato al server gli elementi richiamo l'activity tramite il comando startActivity().
Il mio problema è che ho anche alcuni elementi che mi devo portare indietro e che devo tenere in memoria.
Quindi in pratica dovrei ricaricare solo la lista senza toccare però nessun'altro dato dell'activity. il problema è che appunto non so come farla ricaricare dopo aver inviato i dati al server :(