2017-07-07 14 views
0

私のアプリでは、Webサービスからの応答を受け取った後、ダイアログの断片を表示しています。私はこのサービスをonCreateから呼び出しています。アプリがバックグラウンドになった場合の間では、それは私がthis blog post通過した例外Android:DialogFragment showはWebサービスコール後に不正な状態例外をスローする

Fatal Exception: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState 
    at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1493) 
    at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1511) 
    at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:638) 
    at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:617) 
    at android.support.v4.app.DialogFragment.show(DialogFragment.java:139) 
    at com.activity.MainActivity.showAcceptancePopup(MainActivity.java:1655) 
    at com.activity.MainActivity.access$1000(MainActivity.java:164) 
    at com.activity.MainActivity$28.onResponse(MainActivity.java:1568) 
    at com.activity.MainActivity$28.onResponse(MainActivity.java:1547) 
    at com.android.volley.toolbox.JsonRequest.deliverResponse(JsonRequest.java:65) 
    at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99) 
    at android.os.Handler.handleCallback(Handler.java:751) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:154) 
    at android.app.ActivityThread.main(ActivityThread.java:6123) 
    at java.lang.reflect.Method.invoke(Method.java) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757) 

でクラッシュ。それでも疑問がある場合は、dialogFragment.show()とはどこから呼び出す必要があるかは、サーバーによって提供されるデータによって異なります。

それ以外の場合は、onCreateからonResumeFragmentにAPI呼び出しを移動する必要がありますか?

答えて

1

ソリューションここでは、同様に(コミットdocumentation

によって応じて、お使いのフラグメントトランザクションのcommitAllowingStateLoss();代わりのcommit()を使用している)が、活動の 状態が

を保存した後にコミットが実行されることを可能にします

希望します。

+0

できますが、私は状態の損失が発生しないようにしたい – Nitish

+0

私は、あなたのフラグメントトランザクションをやっていますか? – Cochi

+0

私はonCreateからWebサービスコールを行っていますが、それに応じてダイアログが表示されます。 API呼び出しの場合、私はボレーを使用しています – Nitish

関連する問題