From 9bba6a3b647523bf59bf814335ce653d970ff7c3 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 5 May 2015 15:20:21 +0200 Subject: [PATCH] Fix crash when rotating the phone while uploading a picture --- AndroidManifest.xml | 1 + src/org/linphone/ChatActivity.java | 15 +++++++++++++++ src/org/linphone/ChatFragment.java | 7 ++++++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 745437b78..c2cb23c3d 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -117,6 +117,7 @@ diff --git a/src/org/linphone/ChatActivity.java b/src/org/linphone/ChatActivity.java index b486f4901..5b0884679 100644 --- a/src/org/linphone/ChatActivity.java +++ b/src/org/linphone/ChatActivity.java @@ -20,11 +20,15 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. import android.os.Bundle; import android.support.v4.app.FragmentActivity; +import android.support.v4.app.FragmentManager; /** * @author Margaux Clerc */ public class ChatActivity extends FragmentActivity { + private static final String CHAT_FRAGMENT = "chatFragment"; + private ChatFragment chatFragment; + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -39,6 +43,17 @@ public class ChatActivity extends FragmentActivity { ChatFragment fragment = new ChatFragment(); fragment.setArguments(extras); getSupportFragmentManager().beginTransaction().add(R.id.fragmentContainer, fragment, "ChatFragment").commit(); + + FragmentManager fm = getSupportFragmentManager(); + chatFragment = (ChatFragment) fm.findFragmentByTag(CHAT_FRAGMENT); + + // If the Fragment is non-null, then it is currently being + // retained across a configuration change. + if (chatFragment == null) { + chatFragment = new ChatFragment(); + chatFragment.setArguments(extras); + fm.beginTransaction().add(R.id.fragmentContainer, chatFragment, CHAT_FRAGMENT).commit(); + } } } diff --git a/src/org/linphone/ChatFragment.java b/src/org/linphone/ChatFragment.java index 9fbf83fa7..fc43382fa 100644 --- a/src/org/linphone/ChatFragment.java +++ b/src/org/linphone/ChatFragment.java @@ -124,6 +124,9 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC super.onCreate(savedInstanceState); instance = this; View view = inflater.inflate(R.layout.chat, container, false); + + // Retain the fragment across configuration changes + setRetainInstance(true); //Retrieve parameter from intent sipUri = getArguments().getString("SipUri"); @@ -562,7 +565,9 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC @Override protected void onPostExecute(byte[] result) { - progressDialog.dismiss(); + if (progressDialog != null && progressDialog.isShowing()) { + progressDialog.dismiss(); + } mUploadingImageStream = new ByteArrayInputStream(result);