entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Error Fragment already added

Buenas.

Estoy creando una app en la que en el activity principal contiene un tabHost con 3 pestañas , en la tercera tiene varios botones que replazan ese fragmento añadiendo otro , el problema esta que cuando cambio de pestaña y luego vuelvo a pinchar en la tercera al pulsar para atras para ir al fragmento por defecto me tira el error: Fragment already added

Alguna sugerencia

0voto

Peter comentado

¿Y cual es el código? Sin ver nada, va a ser complicado que alguien te pueda ayudar.

Saludos.

1voto

ortzi comentado

public class MainActivity extends FragmentActivity{

private FragmentTabHost tabHost;
private int id;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //El menu inferior de la pantalla principal
     tabHost= (FragmentTabHost) findViewById(R.id.tabHost);
     tabHost.setup(this,
     getSupportFragmentManager(),android.R.id.tabcontent);
     tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("Noticias"),
     Noticias.class, null);
     tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("Coleccion"),
     Coleccion.class, null);     
     tabHost.addTab(tabHost.newTabSpec("tab3").setIndicator("Deck"),
     Deck.class, null);
}

El codigo de la clase deck

     public class Deck extends Fragment{

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {    contexto = container.getContext();
                    View view = inflater.inflate(R.layout.deck_layout, container, false);
                    lista = (ListView) view.findViewById(R.id.listView1);
                    }

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch(item.getItemId()){
    case R.id.opc_add_mazo:{
        elegirHeroe();
    }
    }
    return true;
}

public void elegirHeroe(){
    if(contexto != null){
        Heroes newFragment = new Heroes();
        FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
        // Reemplazamos lo que haya en la vista fragment_container con este fragmento,
        // y añadimos la transacción a la pila de vuelta para que el usuario pueda volver
        transaction.replace(android.R.id.tabcontent, newFragment);
        transaction.addToBackStack(null);
        // Aplicamos la transacción
        transaction.commit();
    }

}
}

Entonces cuando en la clase deck invoca al metodo elegirHeroe se crea otro fragmento que replaza y si cambio de pestaña y luego vuelvo la pestaña deck , el fragmento que me sale es el ultimo que a sido llamado y al pulsar para ir atras para que se ponga en el la clase principal deck me sale el error comentado anteriormente

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta