diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 11bdde1518..a9e23819df 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -107,6 +107,7 @@
= Build.VERSION_CODES.KITKAT) {
emojiToggle.setVisibility(View.GONE);
}
- attachmentAdapter = new AttachmentTypeSelectorAdapter(this);
- attachmentManager = new AttachmentManager(this, this);
+ attachmentAdapter = new AttachmentTypeSelectorAdapter(this);
+ attachmentManager = new AttachmentManager(this, this);
SendButtonListener sendButtonListener = new SendButtonListener();
ComposeKeyPressedListener composeKeyPressedListener = new ComposeKeyPressedListener();
@@ -750,6 +756,13 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
composeText.setOnFocusChangeListener(composeKeyPressedListener);
emojiDrawer.setComposeEditText(composeText);
emojiToggle.setOnClickListener(new EmojiToggleListener());
+ }
+
+ private void initializeResources() {
+ recipients = RecipientFactory.getRecipientsForIds(this, getIntent().getLongArrayExtra(RECIPIENTS_EXTRA), true);
+ threadId = getIntent().getLongExtra(THREAD_ID_EXTRA, -1);
+ distributionType = getIntent().getIntExtra(DISTRIBUTION_TYPE_EXTRA, ThreadDatabase.DistributionTypes.DEFAULT);
+ masterSecret = getIntent().getParcelableExtra(MASTER_SECRET_EXTRA);
recipients.addListener(new RecipientModifiedListener() {
@Override
@@ -906,9 +919,8 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
if (this.threadId <= 0 || this.recipients == null || this.recipients.isEmpty())
return;
- final Drafts drafts = getDraftsForCurrentState();
-
- final long thisThreadId = this.threadId;
+ final Drafts drafts = getDraftsForCurrentState();
+ final long thisThreadId = this.threadId;
final MasterSecret thisMasterSecret = this.masterSecret.parcelClone();
new AsyncTask() {
@@ -1001,8 +1013,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
boolean refreshFragment = (threadId != this.threadId);
this.threadId = threadId;
- ConversationFragment fragment = (ConversationFragment) getSupportFragmentManager()
- .findFragmentById(R.id.fragment_content);
+ ConversationFragment fragment = getFragment();
if (fragment == null) {
return;
@@ -1018,6 +1029,10 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
fragment.scrollToBottom();
}
+ private ConversationFragment getFragment() {
+ return (ConversationFragment)getSupportFragmentManager().findFragmentById(R.id.fragment_content);
+ }
+
private void sendMessage() {
try {
final Recipients recipients = getRecipients();
diff --git a/src/org/thoughtcrime/securesms/ConversationFragment.java b/src/org/thoughtcrime/securesms/ConversationFragment.java
index bb4a2a504f..64d8652ae0 100644
--- a/src/org/thoughtcrime/securesms/ConversationFragment.java
+++ b/src/org/thoughtcrime/securesms/ConversationFragment.java
@@ -78,6 +78,16 @@ public class ConversationFragment extends ListFragment
this.listener = (ConversationFragmentListener)activity;
}
+ public void onNewIntent() {
+ if (actionMode != null) {
+ actionMode.finish();
+ }
+
+ initializeResources();
+ initializeListAdapter();
+ getLoaderManager().restartLoader(0, null, this);
+ }
+
private void initializeResources() {
this.masterSecret = this.getActivity().getIntent().getParcelableExtra("master_secret");
this.recipients = RecipientFactory.getRecipientsForIds(getActivity(), getActivity().getIntent().getLongArrayExtra("recipients"), true);