Note that there are some explanatory texts on larger screens.

plurals
  1. POjava.lang.IllegalStateException: Can not perform this action after onSaveInstanceState with DialogFragment
    primarykey
    data
    text
    <p>I am facing issue with DialogFragment / getSupportFragmentManager / Android version 4.x</p> <pre><code>01-10 19:46:48.228: E/AndroidRuntime(9879): java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState 01-10 19:46:48.228: E/AndroidRuntime(9879): at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1314) 01-10 19:46:48.228: E/AndroidRuntime(9879): at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1325) 01-10 19:46:48.228: E/AndroidRuntime(9879): at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:548) 01-10 19:46:48.228: E/AndroidRuntime(9879): at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:532) 01-10 19:46:48.228: E/AndroidRuntime(9879): at android.support.v4.app.DialogFragment.show(DialogFragment.java:127) 01-10 19:46:48.228: E/AndroidRuntime(9879): at com.v1.mypck.TermsAndConditions.showDialog(TermsAndConditions.java:256) 01-10 19:46:48.228: E/AndroidRuntime(9879): at com.v1.mypck.TermsAndConditions.handleMessage(TermsAndConditions.java:62) 01-10 19:46:48.228: E/AndroidRuntime(9879): at com.v1.mypck.TermsAndConditions$IncomingHandler.handleMessage(TermsAndConditions.java:53) 01-10 19:46:48.228: E/AndroidRuntime(9879): at android.os.Handler.dispatchMessage(Handler.java:99) 01-10 19:46:48.228: E/AndroidRuntime(9879): at android.os.Looper.loop(Looper.java:137) 01-10 19:46:48.228: E/AndroidRuntime(9879): at android.app.ActivityThread.main(ActivityThread.java:4441) 01-10 19:46:48.228: E/AndroidRuntime(9879): at java.lang.reflect.Method.invokeNative(Native Method) 01-10 19:46:48.228: E/AndroidRuntime(9879): at java.lang.reflect.Method.invoke(Method.java:511) 01-10 19:46:48.228: E/AndroidRuntime(9879): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 01-10 19:46:48.228: E/AndroidRuntime(9879): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 01-10 19:46:48.228: E/AndroidRuntime(9879): at dalvik.system.NativeStart.main(Native Method) </code></pre> <p>In below code when i press back it tries to finish current activity and go back to previous activity it throws above error.</p> <p>Code works well on older version (prior to 4.x).</p> <p>Can somebody guide me in right direction.</p> <pre><code>public class TermsAndConditions extends SherlockFragmentActivity implements LoaderManager.LoaderCallbacks&lt;JSONObject&gt;{ static final String TAG = "TermsAndConditions"; private static int titleResource; private static int messageResource; private IncomingHandler handler = null; private static final int SHOW_NETWORK_DIALOG = 3; static class IncomingHandler extends Handler { private final WeakReference&lt;TermsAndConditions&gt; mTarget; IncomingHandler(TermsAndConditions target) { mTarget = new WeakReference&lt;TermsAndConditions&gt;(target); } @Override public void handleMessage(Message msg) { TermsAndConditions target = mTarget.get(); if (target != null) { target.handleMessage(msg); } } } public void handleMessage(Message msg) { switch (msg.what) { case SHOW_NETWORK_DIALOG: titleResource = R.string.msg_alert_no_network_title; messageResource = R.string.msg_alert_no_network_message; showDialog(); break; } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.web_view); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportLoaderManager().initLoader(0, null, this); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); return true; default: return super.onOptionsItemSelected(item); } } private void loadViewData() { //Logic to load content. } @Override public Loader&lt;JSONObject&gt; onCreateLoader(int arg0, Bundle arg1) { if (handler == null){ handler = new IncomingHandler(TermsAndConditions.this); } return new JsonLoader(this); } @Override public void onLoadFinished(Loader&lt;JSONObject&gt; arg0, JSONObject jsonData) { if(jsonDataObject==null || jsonDataObject.length()==0) { handler.sendEmptyMessage(SHOW_NETWORK_DIALOG); } else { loadViewData(); } } @Override public void onLoaderReset(Loader&lt;JSONObject&gt; arg0) { if(jsonDataObject==null || jsonDataObject.length()==0) { handler.sendEmptyMessage(SHOW_NETWORK_DIALOG); } else { loadViewData(); } } public static class JsonLoader extends AsyncTaskLoader&lt;JSONObject&gt; { public JsonLoader(Context context) { super(context); } @Override protected void onStartLoading() { if (jsonDataObject != null) { deliverResult(jsonDataObject); } if (takeContentChanged() || jsonDataObject == null) { forceLoad(); } } @Override public JSONObject loadInBackground() { try { return response.getJSONObject("result"); } catch (JSONException e) { return null; } catch (Throwable e) { return null; } } @Override public void deliverResult(JSONObject newJsonData) { if (isReset()) { if (jsonDataObject != null) { onReleaseResources(jsonDataObject); } } JSONObject oldData = jsonDataObject; jsonDataObject = newJsonData; if (isStarted()) { super.deliverResult(jsonDataObject); } if (oldData != null) { onReleaseResources(oldData); } } @Override protected void onStopLoading() { cancelLoad(); } @Override public void onCanceled(JSONObject jsonData) { super.onCanceled(jsonData); onReleaseResources(jsonData); } @Override protected void onReset() { super.onReset(); onStopLoading(); if (jsonDataObject != null) { onReleaseResources(jsonDataObject); jsonDataObject = null; } } protected void onReleaseResources(JSONObject jsonData) { jsonData = null; } } public static class MyAlertDialogFragment extends DialogFragment { public static MyAlertDialogFragment newInstance(int title) { MyAlertDialogFragment frag = new MyAlertDialogFragment(); Bundle args = new Bundle(); args.putInt("title", title); frag.setArguments(args); return frag; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { int title = getArguments().getInt("title"); return new AlertDialog.Builder(getActivity()) .setTitle(title) .setMessage(messageResource) .setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { } } ) .create(); } } public void showDialog() { DialogFragment newFragment = MyAlertDialogFragment.newInstance(titleResource); newFragment.show(getSupportFragmentManager(), "my_dialog"); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload