From 28f45e6e2b3080b30782854e8273cef5df7880f2 Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Mon, 28 Dec 2015 17:19:54 +0100 Subject: Fix InCallUI crash when post char dialog is shown When user makes MO video call with post char, such as ";", post char dialog is shown when call is established. At this time if user rotate InCallUI screen, InCallUI will crash because PostCharDialogFragment has no zero argument constructor. Add zero argument constructor for PostCharDialogFragment, and save the needed parameter to Bundle. Change-Id: I3587ad2bc47d4397b78b32d1ec27b8c914e9fb2f --- src/com/android/incallui/PostCharDialogFragment.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/com/android/incallui/PostCharDialogFragment.java b/src/com/android/incallui/PostCharDialogFragment.java index 09b626a9..400e8d76 100644 --- a/src/com/android/incallui/PostCharDialogFragment.java +++ b/src/com/android/incallui/PostCharDialogFragment.java @@ -29,9 +29,15 @@ import android.view.WindowManager; */ public class PostCharDialogFragment extends DialogFragment { + private static final String STATE_CALL_ID = "CALL_ID"; + private static final String STATE_POST_CHARS = "POST_CHARS"; + private String mCallId; private String mPostDialStr; + public PostCharDialogFragment() { + } + public PostCharDialogFragment(String callId, String postDialStr) { mCallId = callId; mPostDialStr = postDialStr; @@ -41,6 +47,11 @@ public class PostCharDialogFragment extends DialogFragment { public Dialog onCreateDialog(Bundle savedInstanceState) { super.onCreateDialog(savedInstanceState); + if (mPostDialStr == null && savedInstanceState != null) { + mCallId = savedInstanceState.getString(STATE_CALL_ID); + mPostDialStr = savedInstanceState.getString(STATE_POST_CHARS); + } + final StringBuilder buf = new StringBuilder(); buf.append(getResources().getText(R.string.wait_prompt_str)); buf.append(mPostDialStr); @@ -71,4 +82,12 @@ public class PostCharDialogFragment extends DialogFragment { TelecomAdapter.getInstance().postDialContinue(mCallId, false); } + + @Override + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + + outState.putString(STATE_CALL_ID, mCallId); + outState.putString(STATE_POST_CHARS, mPostDialStr); + } } -- cgit v1.2.3