Autore Topic: Tasto back di default dell'actionbar nella navigazione a fragment  (Letto 941 volte)

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
0
Ho un ap formata da 1 activity e 4 fragment, i fragment sono uno il padre del successivo. Il primo padre è l'activity. Vorrei che succedesse questo quando premo il tasto back che si trova di default sull'actionbar:
- se mi trovo al fragment 4, venga visualizzato il fragment 3
- se mi trovo al fragment 3, venga visualizzato il fragment 2
- se mi trovo al fragment 2, venga visualizzato il fragment 1
- se mi trovo al fragment 1, venga visualizzata l'activity che ho chiamato MainActivity

invece con il codice che ho scritto, quando premo back dell'actionbar mi riporta sempre all'activity, questo è il mio codice:

con questo codice gestisco la visualizzazione dei frammenti dall'activity
Codice (Java): [Seleziona]
public selectFragment(int step) {
                Fragment fr = new Step1Fragment();
                if (step == 2) {
                        fr = new Step2Fragment();
                } else if (step == 3) {
                        fr = new Step3Fragment();
                } else if (step == 4) {
                        fr = new Step4Fragment();
                }


                FragmentManager fm = getFragmentManager();
                FragmentTransaction fragmentTransaction = fm.beginTransaction();
                fragmentTransaction.add(R.id.fragment_place, fr);
                fragmentTransaction.addToBackStack(null);
                fragmentTransaction.commit();
}

Il manifest è fatto così

Codice (XML): [Seleziona]
         ....
        <activity
           android:name="it.myapp.FragmentManagerActivity"
           android:label="@string/activity_title"
           android:parentActivityName="it.myapp.MainActivity"
           >
        </activity>

Il tasto back l'ho attivato con questo codice:
Codice (Java): [Seleziona]
                ActionBar actionBar = getActionBar();
                actionBar.setDisplayHomeAsUpEnabled(true);
                actionBar.setHomeAsUpIndicator(R.drawable.actionbar_back);
Come faccio a navigare indietro tra i fragment come ho descritto?

grazie

Offline ignaz

  • Utente junior
  • **
  • Post: 54
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Galaxy s2
  • Sistema operativo:
    Win 7 64bit
Re:Tasto back di default dell'actionbar nella navigazione a fragment
« Risposta #1 il: 02 Aprile 2014, 22:34:36 CEST »
0
Devi chiamare addToBackStack(null)  sul fragment che carichi. Ops non avevo visto che lo hai già chiamato

Inviato dal mio Nexus 10 utilizzando Tapatalk
« Ultima modifica: 02 Aprile 2014, 22:37:02 CEST da ignaz »

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Re:Tasto back di default dell'actionbar nella navigazione a fragment
« Risposta #2 il: 02 Aprile 2014, 23:14:30 CEST »
0
ragazzi idee o suggerimenti?

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +152
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:Tasto back di default dell'actionbar nella navigazione a fragment
« Risposta #3 il: 03 Aprile 2014, 10:16:10 CEST »
0
Stai parlando di back o di up?

Offline LinkOut

  • Utente normale
  • ***
  • Post: 272
  • Respect: +38
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi5
Re:Tasto back di default dell'actionbar nella navigazione a fragment
« Risposta #4 il: 03 Aprile 2014, 13:22:16 CEST »
0
Il tasto back ed il tasto UP sono molto differenti...

Il primo è quello fisico e ti permette di scorrere cronologicamente l'applicazione indietro...

Il secondo è quello presente nell'action bar e ti permette di scorrere l'applicazione in modo gerarchico... definendo tu stesso tale modo..

Di quale dei due stai parlando?

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Re:Tasto back di default dell'actionbar nella navigazione a fragment
« Risposta #5 il: 03 Aprile 2014, 23:40:46 CEST »
0
sto parlado del tasto UP
con il codice che ho scritto, ogni volta che premo il tasto up, indipendentemente da quale fragment sto visualizzando, mi torna sempre nella activity padre di tutti i fragment, mi spiego meglio:
io vorrei che se apro 4 fragment, quando premo UP mi viusalizza il terzo (adesso mi visualizza l'activity, padre di tutti i fragment)

io voglio questo
esempio di navigazione di un utente ->activity -> fragment 1 -> f.2 -> f.3 -> f.4 preme UP  -> si visualizza il fragment 3
invece adesso succede questo
esempio di navigazione di un utente ->activity -> fragment 1 -> f.2 -> f.3 -> f.4 preme UP -> si visualizza l'activity

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +152
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:Tasto back di default dell'actionbar nella navigazione a fragment
« Risposta #6 il: 04 Aprile 2014, 12:43:28 CEST »
0
Il tasto UP lo gestisci tu tramite codice.
Devi semplicemente implementare questo metodo con la tua logica

Codice (Java): [Seleziona]
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    // Respond to the action bar's Up/Home button
    case android.R.id.home:
           //IMPLEMENTA QUI LA TUA LOGICA
           return true;
    }
    return super.onOptionsItemSelected(item);
}

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Re:Tasto back di default dell'actionbar nella navigazione a fragment
« Risposta #7 il: 04 Aprile 2014, 15:03:14 CEST »
0
GabMarioPower è cme dici te se vuoi fare una gestione da codice java altrimenti il tasto up segue la gerarchia che vai a specificare nel file manifest tramite questo codice da specificare per ogni activity
android:parentActivityName="it.myapp.activity.MainActivity"

solo che nel mio caso avendo 1 activity e 4 fragment non so come dirgli nel manifest la gerarchia che ho scritto sopra

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +152
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:Tasto back di default dell'actionbar nella navigazione a fragment
« Risposta #8 il: 04 Aprile 2014, 15:35:49 CEST »
0
Che io sappia non puoi agire solo con l'xml.

Devi usare il codice java, e puoi utilizzare o transaction.addToBackStack oppure in base al fragment attivo ti vai a recuperare il fragment che ti interessa usando  getFragmentMangager().findFragmentByTag();