diff --git a/briar-android/src/net/sf/briar/android/blogs/ConfigureBlogActivity.java b/briar-android/src/net/sf/briar/android/blogs/ConfigureBlogActivity.java
index 1fe42adc6b69607d006fa7129fe4365915ed751b..c34dc6e6ac0ef3ab8f6786f7310a9fc52d4dfe8d 100644
--- a/briar-android/src/net/sf/briar/android/blogs/ConfigureBlogActivity.java
+++ b/briar-android/src/net/sf/briar/android/blogs/ConfigureBlogActivity.java
@@ -29,6 +29,8 @@ import net.sf.briar.api.messaging.GroupId;
 import roboguice.activity.RoboFragmentActivity;
 import android.content.Intent;
 import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.Button;
@@ -53,6 +55,8 @@ SelectContactsDialog.Listener {
 	private RadioButton visibleToAll = null, visibleToSome = null;
 	private Button doneButton = null;
 	private ProgressBar progress = null;
+	private NoContactsDialog noContactsDialog = null;
+	private SelectContactsDialog selectContactsDialog = null;
 
 	// Fields that are accessed from background threads must be volatile
 	@Inject private volatile DatabaseComponent db;
@@ -124,6 +128,17 @@ SelectContactsDialog.Listener {
 		layout.addView(progress);
 
 		setContentView(layout);
+
+		FragmentManager fm = getSupportFragmentManager();
+		Fragment f = fm.findFragmentByTag("NoContactsDialog");
+		if(f == null) noContactsDialog = new NoContactsDialog();
+		else noContactsDialog = (NoContactsDialog) f;
+		noContactsDialog.setListener(this);
+
+		f = fm.findFragmentByTag("SelectContactsDialog");
+		if(f == null) selectContactsDialog = new SelectContactsDialog();
+		else selectContactsDialog = (SelectContactsDialog) f;
+		selectContactsDialog.setListener(this);
 	}
 
 	public void onClick(View view) {
@@ -173,17 +188,12 @@ SelectContactsDialog.Listener {
 	private void displayContacts(final Collection<Contact> contacts) {
 		runOnUiThread(new Runnable() {
 			public void run() {
+				FragmentManager fm = getSupportFragmentManager();
 				if(contacts.isEmpty()) {
-					NoContactsDialog dialog = new NoContactsDialog();
-					dialog.setListener(ConfigureBlogActivity.this);
-					dialog.show(getSupportFragmentManager(),
-							"NoContactsDialog");
+					noContactsDialog.show(fm, "NoContactsDialog");
 				} else {
-					SelectContactsDialog dialog = new SelectContactsDialog();
-					dialog.setListener(ConfigureBlogActivity.this);
-					dialog.setContacts(contacts);
-					dialog.show(getSupportFragmentManager(),
-							"SelectContactsDialog");
+					selectContactsDialog.setContacts(contacts);
+					selectContactsDialog.show(fm, "SelectContactsDialog");
 				}
 			}
 		});
diff --git a/briar-android/src/net/sf/briar/android/blogs/CreateBlogActivity.java b/briar-android/src/net/sf/briar/android/blogs/CreateBlogActivity.java
index f699007d287519d9e98ec6f7b3f6987ff823c495..00a4519dfefcad5d00a412216c326068c85d69ef 100644
--- a/briar-android/src/net/sf/briar/android/blogs/CreateBlogActivity.java
+++ b/briar-android/src/net/sf/briar/android/blogs/CreateBlogActivity.java
@@ -37,6 +37,8 @@ import net.sf.briar.api.messaging.LocalGroup;
 import roboguice.activity.RoboFragmentActivity;
 import android.content.Intent;
 import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
 import android.view.KeyEvent;
 import android.view.View;
 import android.view.View.OnClickListener;
@@ -65,6 +67,8 @@ SelectContactsDialog.Listener {
 	private RadioButton visibleToAll = null, visibleToSome = null;
 	private Button createButton = null;
 	private ProgressBar progress = null;
+	private NoContactsDialog noContactsDialog = null;
+	private SelectContactsDialog selectContactsDialog = null;
 
 	// Fields that are accessed from background threads must be volatile
 	@Inject private volatile CryptoComponent crypto;
@@ -132,6 +136,17 @@ SelectContactsDialog.Listener {
 		layout.addView(progress);
 
 		setContentView(layout);
+
+		FragmentManager fm = getSupportFragmentManager();
+		Fragment f = fm.findFragmentByTag("NoContactsDialog");
+		if(f == null) noContactsDialog = new NoContactsDialog();
+		else noContactsDialog = (NoContactsDialog) f;
+		noContactsDialog.setListener(this);
+
+		f = fm.findFragmentByTag("SelectContactsDialog");
+		if(f == null) selectContactsDialog = new SelectContactsDialog();
+		else selectContactsDialog = (SelectContactsDialog) f;
+		selectContactsDialog.setListener(this);
 	}
 
 	private void enableOrDisableCreateButton() {
@@ -206,17 +221,12 @@ SelectContactsDialog.Listener {
 	private void displayContacts(final Collection<Contact> contacts) {
 		runOnUiThread(new Runnable() {
 			public void run() {
+				FragmentManager fm = getSupportFragmentManager();
 				if(contacts.isEmpty()) {
-					NoContactsDialog dialog = new NoContactsDialog();
-					dialog.setListener(CreateBlogActivity.this);
-					dialog.show(getSupportFragmentManager(),
-							"NoContactsDialog");
+					noContactsDialog.show(fm, "NoContactsDialog");
 				} else {
-					SelectContactsDialog dialog = new SelectContactsDialog();
-					dialog.setListener(CreateBlogActivity.this);
-					dialog.setContacts(contacts);
-					dialog.show(getSupportFragmentManager(),
-							"SelectContactsDialog");
+					selectContactsDialog.setContacts(contacts);
+					selectContactsDialog.show(fm, "SelectContactsDialog");
 				}
 			}
 		});
diff --git a/briar-android/src/net/sf/briar/android/groups/ConfigureGroupActivity.java b/briar-android/src/net/sf/briar/android/groups/ConfigureGroupActivity.java
index f0f0f9fdc2a6df20783ac9f860dfe7a132ae3754..139f93e801535bab21c3739e9b38190822bca186 100644
--- a/briar-android/src/net/sf/briar/android/groups/ConfigureGroupActivity.java
+++ b/briar-android/src/net/sf/briar/android/groups/ConfigureGroupActivity.java
@@ -29,6 +29,8 @@ import net.sf.briar.api.messaging.GroupId;
 import roboguice.activity.RoboFragmentActivity;
 import android.content.Intent;
 import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.Button;
@@ -53,6 +55,8 @@ SelectContactsDialog.Listener {
 	private RadioButton visibleToAll = null, visibleToSome = null;
 	private Button doneButton = null;
 	private ProgressBar progress = null;
+	private NoContactsDialog noContactsDialog = null;
+	private SelectContactsDialog selectContactsDialog = null;
 
 	// Fields that are accessed from background threads must be volatile
 	@Inject private volatile DatabaseComponent db;
@@ -122,6 +126,17 @@ SelectContactsDialog.Listener {
 		layout.addView(progress);
 
 		setContentView(layout);
+
+		FragmentManager fm = getSupportFragmentManager();
+		Fragment f = fm.findFragmentByTag("NoContactsDialog");
+		if(f == null) noContactsDialog = new NoContactsDialog();
+		else noContactsDialog = (NoContactsDialog) f;
+		noContactsDialog.setListener(this);
+
+		f = fm.findFragmentByTag("SelectContactsDialog");
+		if(f == null) selectContactsDialog = new SelectContactsDialog();
+		else selectContactsDialog = (SelectContactsDialog) f;
+		selectContactsDialog.setListener(this);
 	}
 
 	public void onClick(View view) {
@@ -171,17 +186,12 @@ SelectContactsDialog.Listener {
 	private void displayContacts(final Collection<Contact> contacts) {
 		runOnUiThread(new Runnable() {
 			public void run() {
+				FragmentManager fm = getSupportFragmentManager();
 				if(contacts.isEmpty()) {
-					NoContactsDialog dialog = new NoContactsDialog();
-					dialog.setListener(ConfigureGroupActivity.this);
-					dialog.show(getSupportFragmentManager(),
-							"NoContactsDialog");
+					noContactsDialog.show(fm, "NoContactsDialog");
 				} else {
-					SelectContactsDialog dialog = new SelectContactsDialog();
-					dialog.setListener(ConfigureGroupActivity.this);
-					dialog.setContacts(contacts);
-					dialog.show(getSupportFragmentManager(),
-							"SelectContactsDialog");
+					selectContactsDialog.setContacts(contacts);
+					selectContactsDialog.show(fm, "SelectContactsDialog");
 				}
 			}
 		});
diff --git a/briar-android/src/net/sf/briar/android/groups/CreateGroupActivity.java b/briar-android/src/net/sf/briar/android/groups/CreateGroupActivity.java
index 7ebd8b59330917b46fcae87cbb3a86aef9c97e21..0670d7f83038c2572b75c02fc0112f77860042f1 100644
--- a/briar-android/src/net/sf/briar/android/groups/CreateGroupActivity.java
+++ b/briar-android/src/net/sf/briar/android/groups/CreateGroupActivity.java
@@ -34,6 +34,8 @@ import net.sf.briar.api.messaging.GroupFactory;
 import roboguice.activity.RoboFragmentActivity;
 import android.content.Intent;
 import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
 import android.view.KeyEvent;
 import android.view.View;
 import android.view.View.OnClickListener;
@@ -61,6 +63,8 @@ SelectContactsDialog.Listener {
 	private RadioButton visibleToAll = null, visibleToSome = null;
 	private Button createButton = null;
 	private ProgressBar progress = null;
+	private NoContactsDialog noContactsDialog = null;
+	private SelectContactsDialog selectContactsDialog = null;
 
 	// Fields that are accessed from background threads must be volatile
 	@Inject private volatile GroupFactory groupFactory;
@@ -126,6 +130,17 @@ SelectContactsDialog.Listener {
 		layout.addView(progress);
 
 		setContentView(layout);
+
+		FragmentManager fm = getSupportFragmentManager();
+		Fragment f = fm.findFragmentByTag("NoContactsDialog");
+		if(f == null) noContactsDialog = new NoContactsDialog();
+		else noContactsDialog = (NoContactsDialog) f;
+		noContactsDialog.setListener(this);
+
+		f = fm.findFragmentByTag("SelectContactsDialog");
+		if(f == null) selectContactsDialog = new SelectContactsDialog();
+		else selectContactsDialog = (SelectContactsDialog) f;
+		selectContactsDialog.setListener(this);
 	}
 
 	private void enableOrDisableCreateButton() {
@@ -215,17 +230,12 @@ SelectContactsDialog.Listener {
 	private void displayContacts(final Collection<Contact> contacts) {
 		runOnUiThread(new Runnable() {
 			public void run() {
+				FragmentManager fm = getSupportFragmentManager();
 				if(contacts.isEmpty()) {
-					NoContactsDialog dialog = new NoContactsDialog();
-					dialog.setListener(CreateGroupActivity.this);
-					dialog.show(getSupportFragmentManager(),
-							"NoContactsDialog");
+					noContactsDialog.show(fm, "NoContactsDialog");
 				} else {
-					SelectContactsDialog dialog = new SelectContactsDialog();
-					dialog.setListener(CreateGroupActivity.this);
-					dialog.setContacts(contacts);
-					dialog.show(getSupportFragmentManager(),
-							"SelectContactsDialog");
+					selectContactsDialog.setContacts(contacts);
+					selectContactsDialog.show(fm, "SelectContactsDialog");
 				}
 			}
 		});
diff --git a/briar-android/src/net/sf/briar/android/messages/ConversationListActivity.java b/briar-android/src/net/sf/briar/android/messages/ConversationListActivity.java
index d42e30ac46d7b7f2530d9c4f155923315110ce16..8c4fe121a502ecf7627e11fe4d52380a8e84b56c 100644
--- a/briar-android/src/net/sf/briar/android/messages/ConversationListActivity.java
+++ b/briar-android/src/net/sf/briar/android/messages/ConversationListActivity.java
@@ -34,6 +34,8 @@ import net.sf.briar.api.lifecycle.LifecycleManager;
 import roboguice.activity.RoboFragmentActivity;
 import android.content.Intent;
 import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.ImageButton;
@@ -51,6 +53,7 @@ implements OnClickListener, DatabaseListener, NoContactsDialog.Listener {
 	private ConversationListAdapter adapter = null;
 	private ListView list = null;
 	private ListLoadingProgressBar loading = null;
+	private NoContactsDialog noContactsDialog = null;
 
 	// Fields that are accessed from background threads must be volatile
 	@Inject private volatile DatabaseComponent db;
@@ -87,6 +90,12 @@ implements OnClickListener, DatabaseListener, NoContactsDialog.Listener {
 		layout.addView(composeButton);
 
 		setContentView(layout);
+
+		FragmentManager fm = getSupportFragmentManager();
+		Fragment f = fm.findFragmentByTag("NoContactsDialog");
+		if(f == null) noContactsDialog = new NoContactsDialog();
+		else noContactsDialog = (NoContactsDialog) f;
+		noContactsDialog.setListener(this);
 	}
 
 	@Override
@@ -186,9 +195,8 @@ implements OnClickListener, DatabaseListener, NoContactsDialog.Listener {
 
 	public void onClick(View view) {
 		if(adapter.isEmpty()) {
-			NoContactsDialog dialog = new NoContactsDialog();
-			dialog.setListener(this);
-			dialog.show(getSupportFragmentManager(), "NoContactsDialog");
+			FragmentManager fm = getSupportFragmentManager();
+			noContactsDialog.show(fm, "NoContactsDialog");
 		} else {
 			startActivity(new Intent(this, WritePrivateMessageActivity.class));
 		}