0

Dans mon application, j'ai un viewpager à l'intérieur et une activité.Obtenir IllegalStateException en revenant sans avoir terminé une intention d'appel

A partir de l'un des fragments, sur un clic de bouton, je suis tiré un intention de voir la zone de numérotation pour faire un appel à l'aide intent.ACTION_VIEW

Il fonctionne très bien dans la plupart des appareils, y compris 2.3.5, 4.0.8 et 4.1, mais dans LG Optimus 4.0.3 (L5), il demande à l'utilisateur de sélectionner parmi les actions Message et Call dans une boîte de dialogue. Si j'appuie sur le bouton d'appel, puis appuyez sur le bouton de retour, cela fonctionne bien. Mais si j'appuie sur le bouton de retour sans sélectionner l'un des deux, l'application se bloque à l'exception,

java.lang.IllegalStateException: Impossible d'effectuer cette action après avoir onSaveInstanceState

La même intention codes fonctionne bien dans LG Optimus, s'il n'y a pas de fragments présents.

J'ai essayé les correctifs pour une erreur similaire, mais ils ne fonctionnent pas.

J'ai essayé de commettre le fragment en utilisant commitAllowingStateLoss()

J'ai aussi essayé avec ce code dans saveInstanceState de mon activité

@Override 
    protected void onSaveInstanceState(Bundle outState) { 
     outState.putString("WORKAROUND_FOR_BUG_19917_KEY", "WORKAROUND_FOR_BUG_19917_VALUE"); 
     super.onSaveInstanceState(outState); 
    } 

Quelqu'un pourrait me aider?

EDIT:

journal d'erreur:

java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState 
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2448) 
    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2476) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1177) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:4476) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:816) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:583) 
    at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState 
    at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1299) 
    at android.support.v4.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:445) 
    at android.support.v4.app.FragmentActivity.onBackPressed(FragmentActivity.java:164) 
    at com.sample01.android.activity.ExtensionActivity.onBackPressed(ExtensionActivity.java:499) 
    at com.sample01.android.activity.Main.onResume(MainActivity.java:328) 
    at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1156) 
    at android.app.Activity.performResume(Activity.java:4710) 
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2438) 
    ... 10 more 

Répondre

0

J'ai trouvé un correctif pour ce problème.

J'ai essayé de vérifier le exit status avec la suppression du super appel dans savedInstanceState.

super.onSaveInstanceState(savedInstanceState);

je commettais les fragments permettant la perte d'état en raison de laquelle mon application a été de sortir.

J'ai essayé de définir le code EXIT STATUS comme faux.

Maintenant, il vérifie l'état de sortie dans le onBackpress() et ça fonctionne bien!

Merci à ce POST qui m'a aidé à trouver une solution.! Même les commentaires pour cette réponse sont utiles.

0

si vous avez ProgressDialog arrêter et ajouter un peu de test comme: if (! ProgressDialog = null & & progressDialog.isShowing()) {stopProgressBarDialog(); }

Questions connexes