diff --git a/app/src/main/java/app/fedilab/android/activities/PixelfedComposeActivity.java b/app/src/main/java/app/fedilab/android/activities/PixelfedComposeActivity.java index a69caaf7f..4facf720b 100644 --- a/app/src/main/java/app/fedilab/android/activities/PixelfedComposeActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/PixelfedComposeActivity.java @@ -1682,7 +1682,7 @@ public class PixelfedComposeActivity extends BaseActivity implements UploadStatu this.checkedValues.add(toot_content.getText().toString().contains("@" + account.getAcct())); } this.loader.setVisibility(View.GONE); - AccountsReplyAdapter contactAdapter = new AccountsReplyAdapter(this.contacts, this.checkedValues); + AccountsReplyAdapter contactAdapter = new AccountsReplyAdapter(new WeakReference<>(PixelfedComposeActivity.this), this.contacts, this.checkedValues); this.lv_accounts_search.setAdapter(contactAdapter); } diff --git a/app/src/main/java/app/fedilab/android/activities/TootActivity.java b/app/src/main/java/app/fedilab/android/activities/TootActivity.java index 55906f49f..a3d9c00e6 100644 --- a/app/src/main/java/app/fedilab/android/activities/TootActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/TootActivity.java @@ -58,6 +58,7 @@ import android.text.Html; import android.text.InputFilter; import android.text.InputType; import android.text.TextWatcher; +import android.util.Log; import android.util.Patterns; import android.view.LayoutInflater; import android.view.Menu; @@ -2895,7 +2896,7 @@ public class TootActivity extends BaseActivity implements UploadStatusDelegate, this.checkedValues.add(toot_content.getText().toString().contains("@" + account.getAcct())); } this.loader.setVisibility(View.GONE); - AccountsReplyAdapter contactAdapter = new AccountsReplyAdapter(this.contacts, this.checkedValues); + AccountsReplyAdapter contactAdapter = new AccountsReplyAdapter(new WeakReference<>(TootActivity.this),this.contacts, this.checkedValues); this.lv_accounts_search.setAdapter(contactAdapter); } @@ -4029,7 +4030,7 @@ public class TootActivity extends BaseActivity implements UploadStatusDelegate, i++; } final AlertDialog.Builder builderSingle = new AlertDialog.Builder(TootActivity.this, style); - AccountsReplyAdapter accountsReplyAdapter = new AccountsReplyAdapter(accounts, checkedValues); + AccountsReplyAdapter accountsReplyAdapter = new AccountsReplyAdapter(new WeakReference<>(TootActivity.this), accounts, checkedValues); builderSingle.setTitle(getString(R.string.select_accounts)).setAdapter(accountsReplyAdapter, null); builderSingle.setNegativeButton(R.string.validate, new DialogInterface.OnClickListener() { @Override @@ -4042,6 +4043,7 @@ public class TootActivity extends BaseActivity implements UploadStatusDelegate, } public void changeAccountReply(boolean isChecked, String acct) { + Log.v(Helper.TAG,isChecked + " -> " + acct ); if (isChecked) { if (!toot_content.getText().toString().contains(acct)) toot_content.setText(String.format("%s %s", acct, toot_content.getText())); diff --git a/app/src/main/java/app/fedilab/android/drawers/AccountsReplyAdapter.java b/app/src/main/java/app/fedilab/android/drawers/AccountsReplyAdapter.java index 27f92ae17..679629273 100644 --- a/app/src/main/java/app/fedilab/android/drawers/AccountsReplyAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/AccountsReplyAdapter.java @@ -15,6 +15,7 @@ package app.fedilab.android.drawers; * see . */ +import android.app.Activity; import android.content.Context; import androidx.annotation.NonNull; @@ -31,6 +32,7 @@ import android.widget.TextView; import com.bumptech.glide.Glide; +import java.lang.ref.WeakReference; import java.util.List; import app.fedilab.android.client.Entities.Account; @@ -45,22 +47,23 @@ import app.fedilab.android.activities.TootActivity; public class AccountsReplyAdapter extends BaseAdapter { private List accounts; - private LayoutInflater layoutInflater; private boolean[] checked; - private Context context; + private WeakReference activityWeakReference; - public AccountsReplyAdapter(List accounts, boolean[] checked) { + public AccountsReplyAdapter(WeakReference activityWeakReference, List accounts, boolean[] checked) { this.accounts = accounts; this.checked = checked; + this.activityWeakReference = activityWeakReference; } - public AccountsReplyAdapter(List accounts, List checked) { + public AccountsReplyAdapter(WeakReference activityWeakReference, List accounts, List checked) { this.accounts = accounts; this.checked = new boolean[checked.size()]; int index = 0; for (Boolean val : checked) { this.checked[index++] = val; } + this.activityWeakReference = activityWeakReference; } @Override @@ -82,8 +85,7 @@ public class AccountsReplyAdapter extends BaseAdapter { @NonNull @Override public View getView(final int position, View convertView, @NonNull ViewGroup parent) { - context = parent.getContext(); - layoutInflater = LayoutInflater.from(context); + LayoutInflater layoutInflater = LayoutInflater.from(activityWeakReference.get()); final Account account = accounts.get(position); final ViewHolder holder; if (convertView == null) { @@ -102,9 +104,10 @@ public class AccountsReplyAdapter extends BaseAdapter { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) { try { - ((TootActivity) context).changeAccountReply(isChecked, "@" + account.getAcct()); + ((TootActivity) activityWeakReference.get()).changeAccountReply(isChecked, "@" + account.getAcct()); checked[position] = isChecked; } catch (Exception ignored) { + ignored.printStackTrace(); } } });