2012-06-06 15 views
6

Estoy usando la muestra de Android, FragmentTabs.Pantalla FragmentActivity Tab Blackout

Digamos que hay 4 pestañas (A, B, C, D). Puedo reemplazar el fragmento de pestaña (A) con otro (E), mediante el uso de este código

FragmentTransaction transaction = getFragmentManager() 
       .beginTransaction(); 

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

     // Commit the transaction 
     transaction.commit(); 

En otra pestaña C, cuando se presiona el botón trasero de la pantalla de la ficha (A) se convierten en negro.

+0

[aquí Android con fragmentos] (http://android.codeandmagic.org/2011/07/android -tabs-with-fragments /) y también vea este sitio para desarrolladores [Fragments] (http://developer.android.com/guide/topics/fundamentals/fragments.html) Espero que lo ayude. –

Respuesta

0

Normalmente uso la muestra de Android, FragmentTabs, para administrar pestañas, y no he experimentado este problema. Sin ver el código fuente completo, es difícil saber exactamente qué está sucediendo. Pero, si no está utilizando FragmentTabs, puede intentar migrar a eso, ya que se ha probado por completo;)

+0

Estoy usando esa muestra de Android también. Pero aún obtengo la pantalla Blackout como describí anteriormente. – asish

1

Es muy probable que agregue la primera transacción de Fragmentos a la pila posterior. Al agregar una transacción a la pila posterior, eso significa que cuando el usuario responda, la última transacción se revertirá. Entonces, si agregaste el Fragmento A y eliminaste el Fragmento B, al presionar hacia atrás se eliminará el Fragmento A y se agregará el Fragmento B (y se restaurará el estado guardado para el Fragmento B).

Para su primera transacción, solo está agregando un Fragmento a la Actividad, por lo que al invertir eso se eliminará el Fragmento y, por lo tanto, no se mostrará nada. Así que simplemente no agregue la primera transacción a la pila posterior (suponiendo que lo haya hecho ... No tengo forma de saberlo porque solo pegó un pequeño fragmento de su código).

2

Hola Ashish, este problema está sucediendo porque los fragmentos no pueden entenderse como actividad normal de la espalda en la actividad normal cuando presionas la tecla Atrás en ese momento la actividad recientemente utilizada se abrirá automáticamente pero en fragmentos no sucederá al presionar el botón Atrás, entonces tenemos que mantener la espalda evento en el fragmento aquí estoy compartiendo el código de la que yo estoy manejando mi actividad fragmento de lo que puede ser usted puede comprobar esto

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); 


     } 

ver la parte más está demostrando que la intención es mantener mis fragmentos

por favor revisa mi ejemplo (Fragmento con Gridview) el cual tengo compartido aquí para todos los usuarios de fragmentos encontrará algo útil de ella

comprobar mi respuesta en este enlace: How to Show Different Layouts inside Fragments