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)); }