Autore Topic: Navigazione dell'Activity Stack con tanto back  (Letto 1127 volte)

Offline MMarko

  • Utente junior
  • **
  • Post: 128
  • Respect: +5
    • MarcoMatarazzi
    • Mostra profilo
    • La Rocchetta Bed And Breakfast
  • Dispositivo Android:
    HTC Legend
  • Play Store ID:
    MarcoMatarazzi
Navigazione dell'Activity Stack con tanto back
« il: 21 Luglio 2010, 21:18:54 CEST »
0
Buona sera a tutti, il mio problema è il seguente:
premendo il tasto back del mio telefonino ripercorro Activity dello Stack che "non sono aggiornate".

Ad esempio:
se mi trovo nell'activity A (la quale visualizza una serie di informazioni) passo ad una Activity B (che modifica il contenuto di A) e premo il pulsante "TORNA" A rimane non aggiornata.

Esiste un modo per fare in modo che l'activity richiesta premendo BACK venga ricaricata?

Grazie!


Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Navigazione dell'Activity Stack con tanto back
« Risposta #1 il: 22 Luglio 2010, 10:55:30 CEST »
0
Devi agire sul metodo onResume (se l'activity B non copre totalmente l'activity A) o onRestart (se la copre totalmente) dell'activity A per ricaricarne i dati.

Dai una occhiata al Component Lifecycles delle Activity.

Ciao!

Offline MMarko

  • Utente junior
  • **
  • Post: 128
  • Respect: +5
    • MarcoMatarazzi
    • Mostra profilo
    • La Rocchetta Bed And Breakfast
  • Dispositivo Android:
    HTC Legend
  • Play Store ID:
    MarcoMatarazzi
Re:Navigazione dell'Activity Stack con tanto back
« Risposta #2 il: 22 Luglio 2010, 10:57:59 CEST »
0
Grazie mille per la risposta MarcoDuff.

Dopo un po di ricerche ho pensato di risolvere il problema sovrascrivendo l'azione del pulsante back

AD ESEMPIO:
Codice (Java): [Seleziona]
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)  {
        if (Integer.parseInt(android.os.Build.VERSION.SDK) < 5
                && keyCode == KeyEvent.KEYCODE_BACK
                && event.getRepeatCount() == 0) {
            Log.d("CDA", "onKeyDown Called");
            onBackPressed();
        }

        return super.onKeyDown(keyCode, event);
    }

    public void onBackPressed() {
        Log.d("CDA", "onBackPressed Called");
        Intent setIntent = new Intent(Intent.ACTION_MAIN);
        setIntent.addCategory(Intent.CATEGORY_HOME);
        setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(setIntent);

        return;
    }

Per il momento sembra funzionare benone, che ne pensate?

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Navigazione dell'Activity Stack con tanto back
« Risposta #3 il: 22 Luglio 2010, 11:12:02 CEST »
0
Mmm... vai fuori il normale ciclo di vita di una attività. Inoltre quel metodo è sicuramente più lento rispetto ad un semplice override dei metodi onResume/onRestart...

Perplesso...

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:Navigazione dell'Activity Stack con tanto back
« Risposta #4 il: 22 Luglio 2010, 11:33:22 CEST »
0
Come mai non ti piace l'onResume? É automatico e tu non devi fare niente se non scrivere il codice da eseguire..
Postate il LogCat LogCat LogCat LogCat LogCat

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Navigazione dell'Activity Stack con tanto back
« Risposta #5 il: 22 Luglio 2010, 11:39:14 CEST »
0
Per il momento sembra funzionare benone, che ne pensate?

Attento che il metodo onBackPressed() è disponibile mi pare solo dalla 2.x, nelle versioni precedenti la tua activity crasharebbe miseramente.

Offline MMarko

  • Utente junior
  • **
  • Post: 128
  • Respect: +5
    • MarcoMatarazzi
    • Mostra profilo
    • La Rocchetta Bed And Breakfast
  • Dispositivo Android:
    HTC Legend
  • Play Store ID:
    MarcoMatarazzi
Re:Navigazione dell'Activity Stack con tanto back
« Risposta #6 il: 22 Luglio 2010, 11:43:50 CEST »
0
Come mai non ti piace l'onResume? É automatico e tu non devi fare niente se non scrivere il codice da eseguire..
Quindi se io premo sul pulsante back per tornare all'activity A viene eseguito il codice on-resume? se è cosi cambio subito :P


PS:
Attento che il metodo onBackPressed() è disponibile mi pare solo dalla 2.x, nelle versioni precedenti la tua activity crasharebbe miseramente.
Ricky mi sa che non è cosi infatti a me funziona benone sul mio pad con Android 1.5

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Navigazione dell'Activity Stack con tanto back
« Risposta #7 il: 22 Luglio 2010, 11:55:31 CEST »
0
PS:Ricky mi sa che non è cosi infatti a me funziona benone sul mio pad con Android 1.5

http://developer.android.com/reference/android/app/Activity.html#onBackPressed()

come vedi Since: API Level 5 :)
« Ultima modifica: 22 Luglio 2010, 11:58:02 CEST da Ricky` »

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:Navigazione dell'Activity Stack con tanto back
« Risposta #8 il: 22 Luglio 2010, 12:18:37 CEST »
0
probabilmente ti funziona perche l'hai dichiarato come metodo normale, senza fare l'override...

dalla api level 5, se fai l'override di onBackPressed, questo viene chiamato automaticamente dalla tua applicazione , quando il tasto back viene premuto.
« Ultima modifica: 22 Luglio 2010, 13:29:12 CEST da Qlimax »

Offline MMarko

  • Utente junior
  • **
  • Post: 128
  • Respect: +5
    • MarcoMatarazzi
    • Mostra profilo
    • La Rocchetta Bed And Breakfast
  • Dispositivo Android:
    HTC Legend
  • Play Store ID:
    MarcoMatarazzi
Re:Navigazione dell'Activity Stack con tanto back
« Risposta #9 il: 22 Luglio 2010, 12:19:29 CEST »
0
Bene grazie raga, adesso provo a sostituire tutto con onResume();

grazie delle dritte :)

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:Navigazione dell'Activity Stack con tanto back
« Risposta #10 il: 22 Luglio 2010, 16:18:56 CEST »
0
probabilmente ti funziona perche l'hai dichiarato come metodo normale, senza fare l'override...

dalla api level 5, se fai l'override di onBackPressed, questo viene chiamato automaticamente dalla tua applicazione , quando il tasto back viene premuto.
Ma comunque il metodo non puó essere facilmente sostituito intercettando la pressione del tasto back tramite l'onKeyDown (mi pare fosse questo il metodo)?
Postate il LogCat LogCat LogCat LogCat LogCat