la implementación de una aplicación donde el usuario puede iniciar sesión en la que tengo la siguiente situación: Si se registra el usuario en realizar la acción demás iniciar la actividad de inicio de sesión para el resultado y si el resultado es Activity.RESULT_OK realizar la acción.acciones en onActivityResult y "Error No se puede realizar esta acción después de onSaveInstanceState"
Mi problema es que la acción debe jugar es mostrar un DialogFragment, pero llamar
DialogFragment newFragment = MyDialogFragment.newInstance(mStackLevel);
newFragment.show(ft, "dialog")
en la devolución de llamada onActivityResult se emite una excepción:
Caused by: java.lang.IllegalStateException:
Can not perform this action after onSaveInstanceState
Entonces, ¿cómo puedo solucionar esto? Estoy pensando en elevar una bandera allí y mostrar el cuadro de diálogo en el onResume pero veo esta solución un poco sucio
Editar: Se ha añadido más código (Im siguiendo este ejemplo para mostrar la DialogFragment
Cuando la acción es solicitados por el usuario:
...
if (!user.isLogged()){
startActivityForResult(new Intent(cnt, Login.class), REQUEST_LOGIN_FOR_COMMENT);
}
en el mismo fragmento
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_LOGIN_FOR_COMMENT && resultCode == Activity.RESULT_OK) {
FragmentTransaction ft = getFragmentManager().beginTransaction();
DialogFragment newFragment = MyDialogFragment.newInstance();
newFragment.show(ft, "dialog")
}
}
Y si el usuario inicia sesión en la actividad de sesión llamadas;
setResult(Activity.RESULT_OK);
finish();
creo que deberías publicar todo el código. Parece que está tratando de mostrar el diálogo después de onpause – nandeesh
Editó la pregunta: D – Addev
Compruebe http://www.androiddesignpatterns.com/2013/08/fragment-transaction-commit-state-loss.html para comprender por qué esto está sucediendo – Maragues