Implementazione di un'app in cui l'utente può accedere Ho la seguente situazione: Se l'utente è connesso esegui l'azione altrimenti avvia l'attività di accesso per risultato e se il risultato è Activity.RESULT_OK fai l'azione.Azioni in onActivityResult e "Errore Impossibile eseguire questa azione dopo onSaveInstanceState"
mio problema è che l'azione da perfom è quello di mostrare un DialogFragment, ma chiamando
DialogFragment newFragment = MyDialogFragment.newInstance(mStackLevel);
newFragment.show(ft, "dialog")
nella richiamata onActivityResult genera un'eccezione:
Caused by: java.lang.IllegalStateException:
Can not perform this action after onSaveInstanceState
Così come posso risolvere questo problema? Sto pensando a sollevare una bandiera lì e mostrare la finestra di dialogo nella onResume ma vedo questa soluzione un po 'sporco
Edit: Aggiunto più codice (Im seguendo questo esempio per mostrare il DialogFragment
Quando l'azione è richiesto dall'utente:
...
if (!user.isLogged()){
startActivityForResult(new Intent(cnt, Login.class), REQUEST_LOGIN_FOR_COMMENT);
}
Nello stesso frammento
@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")
}
}
E se l'utente accede dell'attività Accesso chiamate;
setResult(Activity.RESULT_OK);
finish();
penso che dovresti postare l'intero codice. Sembra che tu stia cercando di mostrare il dialogo dopo la pausa – nandeesh
Modificato la domanda: D – Addev
Controlla http://www.androiddesignpatterns.com/2013/08/fragment-transaction-commit-state-loss.html per capire perché questo sta accadendo – Maragues