TransWikia.com

Error al recargar fragment

Stack Overflow en español Asked by Esteban Sasso on December 25, 2021

Buenas tardes estoy presentando el siguiente problema, al intentar recargar un fragment la aplicación queda colgada y luego el celular se reinicia.

El fragment AdminComment muestra un listView que cuando se presiona uno de estos objetos del listView abre un dialog (DialogAdminRecomendation) y este da dos opciones Aceptar cambios y cancelar. Al final del metodo createSimpleDialog estoy agregando la siguiente linea de codigo para que se recargue el Fragment AdminComment que es el contenedor del ListView:

getFragmentManager().beginTransaction().detach(this).attach(this).commit();

Favor agradeceria mucho si me ayudan indicandome si estoy cometiendo un error o si me dan una idea de como solucionarlo.

De antemano muchas gracias.

Adjunto metodo CreateSimpleDialog

public AlertDialog createSimpleDialog() {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

    builder.setTitle("Aceptar Cambios")
            .setMessage("Esta seguro de aceptar los cambios")
            .setPositiveButton("SI",
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            listener.onPossitiveButtonClickInsert(idMachinePointAux,titleAux,bodyCommentAux,usuarioFinalAux);
                            //envio correo avisando
                        }
                    })
            .setNegativeButton("Eliminar Recomendación",
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            listener.onNegativeButtonClickDelete(idMachinePointAux,titleAux,bodyCommentAux,usuarioFinalAux);
                            //envio correo avisando
                        }
                    });
    getFragmentManager().beginTransaction().detach(this).attach(this).commit();
    return builder.create();
}

Saludos Cordiales

2 Answers

Estas realizando dos operaciones contrarias al tratar de realiza la transaccion lo cual es incorrecto

getFragmentManager().beginTransaction().detach(this).attach(this).commit();
  • attach() asocia el Fragment con la Actividad.
  • detach() desasocia el Fragment con la Actividad.

Además this debe ser un Fragmento.


Puedes agregar un Fragment de esta forma (te sugiero usar getSupportFragmentManager en lugar de getFragmentManager)

 Fragment fragment = getSupportFragmentManager().findFragmentByTag("NombreFragment"); 

o también mediante el id del Fragment:

  Fragment fragment =  getSupportFragmentManager().findFragmentById(R.id.my_fragment);

y se procede a realizar la transacción:

FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
ft.attach(frg);
ft.commit();

Te sugiero revises la documentacion para que entiendas como lograrlo

Answered by Elenasys on December 25, 2021

Una forma de recargar un fragment sería así:

FragmentAdminComment frag = new FragmentAdminComment();  
FragmentManager fm = getFragmentManager();
fm.beginTransaction().replace(R.id.frame, frag).addToBackStack(null).commit();

Answered by armen on December 25, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP