2012-06-06 11 views
6

Sto utilizzando l'esempio Android, FragmentTabs.Fragment Schermata della scheda di attività fisica Blackout

Dire, ci sono 4 schede (A, B, C, D). Sostituisco il frammento scheda (A) con un altro (E), utilizzando questo codice

FragmentTransaction transaction = getFragmentManager() 
       .beginTransaction(); 

     transaction.replace(R.id.realtabcontent, newFragment); 
     transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
     transaction.addToBackStack(null); 

     // Commit the transaction 
     transaction.commit(); 

In un'altra scheda C, quando si preme di nuovo il tasto schermata della scheda (A) diventano neri.

+0

[Tabs Android con Frammenti] (http://android.codeandmagic.org/2011/07/android -tabs-with-fragments /) e anche vedere questo sito sviluppatore [Frammenti] (http://developer.android.com/guide/topics/fundamentals/fragments.html) Spero che aiuti. –

risposta

0

In genere utilizzo il campione Android, FragmentTabs, per la gestione delle schede e non ho riscontrato questo problema. Senza vedere il codice sorgente completo, è difficile dire esattamente cosa sta succedendo. Tuttavia, se non si utilizza lo standard FragmentTabs, è possibile provare a eseguire la migrazione, poiché è stato completamente testato;)

+0

Anche io sto usando quel campione Android. Ma continuando a ottenere lo schermo Blackout come ho descritto sopra. – asish

1

È molto probabile che si aggiunga la prima transazione di Frammento allo stack posteriore. Quando si aggiunge una transazione allo stack posteriore, ciò significa che quando l'utente risponde, l'ultima transazione verrà annullata. Quindi, se hai aggiunto il frammento A e rimosso il frammento B, premendo indietro rimuovi il frammento A e aggiungi il frammento B (e ripristina alcuni stato salvato per il frammento B).

Per la prima transazione, si aggiunge semplicemente un frammento all'attività, quindi l'inversione che rimuoverà il frammento e, quindi, non visualizzerà nulla. Quindi non aggiungere la prima transazione al back stack (supponendo che tu l'abbia fatto ... non ho modo di saperlo perché hai incollato solo un piccolo snippet del tuo codice).

2

Ciao Ashish questo problema sta accadendo perché il frammento non può comprendere come normale attività di retromarcia nella normale attività quando premi il tasto indietro in quel momento l'attività usata di recente si aprirà automaticamente ma in frammento non succederà quando premi il pulsante Indietro, quindi dobbiamo mantenere di nuovo evento nel frammento qui sto condividendo il codice da cui sto maneggiando la mia attività frammento in modo può essere possibile controllare questo

public void onListItemClick(ListView l, View v, int position, long id) { 
     showDetail(position); 

    } 

    void showDetail(int position) { 
     this.position=position; 
     if(isDualPane){ 
      getListView().setItemChecked(position, true); 
      DetailFragment detailFragment = (DetailFragment) 
        getFragmentManager().findFragmentById(R.id.detail); 

      if (detailFragment == null || detailFragment.getIndex() != position) { 
       detailFragment = new DetailFragment(position); 
       FragmentTransaction ft =getFragmentManager().beginTransaction(); 
       ft.replace(R.id.detail, detailFragment); 
       ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 
       ft.commit(); 
      } 

     } 
     else { 
      Intent intent =new Intent(); 
      intent.setClass(getActivity(),DetailActivity.class); 
      intent.putExtra("position", position); 
      startActivity(intent); 


     } 

vedere la parte altro sta dimostrando che l'intento è mantenere i miei frammenti

per favore controlla il mio esempio (Fragment With Gridview) che ho condiviso qui per tutti gli utenti frammento troverete qualche cosa utile da esso

controllare la mia risposta su questo link: How to Show Different Layouts inside Fragments

Problemi correlati