Loading k9mail/src/main/java/com/fsck/k9/activity/MessageLoaderHelper.java +8 −4 Original line number Original line Diff line number Diff line Loading @@ -258,7 +258,7 @@ public class MessageLoaderHelper { // process with crypto helper // process with crypto helper private void startOrResumeCryptoOperation() { private void startOrResumeCryptoOperation() { RetainFragment<MessageCryptoHelper> retainCryptoHelperFragment = getMessageCryptoHelperRetainFragment(); RetainFragment<MessageCryptoHelper> retainCryptoHelperFragment = getMessageCryptoHelperRetainFragment(true); if (retainCryptoHelperFragment.hasData()) { if (retainCryptoHelperFragment.hasData()) { messageCryptoHelper = retainCryptoHelperFragment.getData(); messageCryptoHelper = retainCryptoHelperFragment.getData(); } else { } else { Loading @@ -270,7 +270,7 @@ public class MessageLoaderHelper { } } private void cancelAndClearCryptoOperation() { private void cancelAndClearCryptoOperation() { RetainFragment<MessageCryptoHelper> retainCryptoHelperFragment = getMessageCryptoHelperRetainFragment(); RetainFragment<MessageCryptoHelper> retainCryptoHelperFragment = getMessageCryptoHelperRetainFragment(false); if (retainCryptoHelperFragment != null) { if (retainCryptoHelperFragment != null) { if (retainCryptoHelperFragment.hasData()) { if (retainCryptoHelperFragment.hasData()) { messageCryptoHelper = retainCryptoHelperFragment.getData(); messageCryptoHelper = retainCryptoHelperFragment.getData(); Loading @@ -281,8 +281,12 @@ public class MessageLoaderHelper { } } } } private RetainFragment<MessageCryptoHelper> getMessageCryptoHelperRetainFragment() { private RetainFragment<MessageCryptoHelper> getMessageCryptoHelperRetainFragment(boolean createIfNotExists) { if (createIfNotExists) { return RetainFragment.findOrCreate(fragmentManager, "crypto_helper_" + messageReference.hashCode()); return RetainFragment.findOrCreate(fragmentManager, "crypto_helper_" + messageReference.hashCode()); } else { return RetainFragment.findOrNull(fragmentManager, "crypto_helper_" + messageReference.hashCode()); } } } private MessageCryptoCallback messageCryptoCallback = new MessageCryptoCallback() { private MessageCryptoCallback messageCryptoCallback = new MessageCryptoCallback() { Loading k9mail/src/main/java/com/fsck/k9/helper/RetainFragment.java +8 −1 Original line number Original line Diff line number Diff line Loading @@ -10,6 +10,7 @@ import android.os.Bundle; public class RetainFragment<T> extends Fragment { public class RetainFragment<T> extends Fragment { private T data; private T data; private boolean cleared; @Override @Override public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) { Loading @@ -30,11 +31,16 @@ public class RetainFragment<T> extends Fragment { this.data = data; this.data = data; } } public static <T> RetainFragment<T> findOrNull(FragmentManager fm, String tag) { // noinspection unchecked, we know this is the the right type return (RetainFragment<T>) fm.findFragmentByTag(tag); } public static <T> RetainFragment<T> findOrCreate(FragmentManager fm, String tag) { public static <T> RetainFragment<T> findOrCreate(FragmentManager fm, String tag) { // noinspection unchecked, we know this is the the right type // noinspection unchecked, we know this is the the right type RetainFragment<T> retainFragment = (RetainFragment<T>) fm.findFragmentByTag(tag); RetainFragment<T> retainFragment = (RetainFragment<T>) fm.findFragmentByTag(tag); if (retainFragment == null) { if (retainFragment == null || retainFragment.cleared) { retainFragment = new RetainFragment<>(); retainFragment = new RetainFragment<>(); fm.beginTransaction() fm.beginTransaction() .add(retainFragment, tag) .add(retainFragment, tag) Loading @@ -46,6 +52,7 @@ public class RetainFragment<T> extends Fragment { public void clearAndRemove(FragmentManager fm) { public void clearAndRemove(FragmentManager fm) { data = null; data = null; cleared = true; if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1 && fm.isDestroyed()) { if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1 && fm.isDestroyed()) { return; return; Loading Loading
k9mail/src/main/java/com/fsck/k9/activity/MessageLoaderHelper.java +8 −4 Original line number Original line Diff line number Diff line Loading @@ -258,7 +258,7 @@ public class MessageLoaderHelper { // process with crypto helper // process with crypto helper private void startOrResumeCryptoOperation() { private void startOrResumeCryptoOperation() { RetainFragment<MessageCryptoHelper> retainCryptoHelperFragment = getMessageCryptoHelperRetainFragment(); RetainFragment<MessageCryptoHelper> retainCryptoHelperFragment = getMessageCryptoHelperRetainFragment(true); if (retainCryptoHelperFragment.hasData()) { if (retainCryptoHelperFragment.hasData()) { messageCryptoHelper = retainCryptoHelperFragment.getData(); messageCryptoHelper = retainCryptoHelperFragment.getData(); } else { } else { Loading @@ -270,7 +270,7 @@ public class MessageLoaderHelper { } } private void cancelAndClearCryptoOperation() { private void cancelAndClearCryptoOperation() { RetainFragment<MessageCryptoHelper> retainCryptoHelperFragment = getMessageCryptoHelperRetainFragment(); RetainFragment<MessageCryptoHelper> retainCryptoHelperFragment = getMessageCryptoHelperRetainFragment(false); if (retainCryptoHelperFragment != null) { if (retainCryptoHelperFragment != null) { if (retainCryptoHelperFragment.hasData()) { if (retainCryptoHelperFragment.hasData()) { messageCryptoHelper = retainCryptoHelperFragment.getData(); messageCryptoHelper = retainCryptoHelperFragment.getData(); Loading @@ -281,8 +281,12 @@ public class MessageLoaderHelper { } } } } private RetainFragment<MessageCryptoHelper> getMessageCryptoHelperRetainFragment() { private RetainFragment<MessageCryptoHelper> getMessageCryptoHelperRetainFragment(boolean createIfNotExists) { if (createIfNotExists) { return RetainFragment.findOrCreate(fragmentManager, "crypto_helper_" + messageReference.hashCode()); return RetainFragment.findOrCreate(fragmentManager, "crypto_helper_" + messageReference.hashCode()); } else { return RetainFragment.findOrNull(fragmentManager, "crypto_helper_" + messageReference.hashCode()); } } } private MessageCryptoCallback messageCryptoCallback = new MessageCryptoCallback() { private MessageCryptoCallback messageCryptoCallback = new MessageCryptoCallback() { Loading
k9mail/src/main/java/com/fsck/k9/helper/RetainFragment.java +8 −1 Original line number Original line Diff line number Diff line Loading @@ -10,6 +10,7 @@ import android.os.Bundle; public class RetainFragment<T> extends Fragment { public class RetainFragment<T> extends Fragment { private T data; private T data; private boolean cleared; @Override @Override public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) { Loading @@ -30,11 +31,16 @@ public class RetainFragment<T> extends Fragment { this.data = data; this.data = data; } } public static <T> RetainFragment<T> findOrNull(FragmentManager fm, String tag) { // noinspection unchecked, we know this is the the right type return (RetainFragment<T>) fm.findFragmentByTag(tag); } public static <T> RetainFragment<T> findOrCreate(FragmentManager fm, String tag) { public static <T> RetainFragment<T> findOrCreate(FragmentManager fm, String tag) { // noinspection unchecked, we know this is the the right type // noinspection unchecked, we know this is the the right type RetainFragment<T> retainFragment = (RetainFragment<T>) fm.findFragmentByTag(tag); RetainFragment<T> retainFragment = (RetainFragment<T>) fm.findFragmentByTag(tag); if (retainFragment == null) { if (retainFragment == null || retainFragment.cleared) { retainFragment = new RetainFragment<>(); retainFragment = new RetainFragment<>(); fm.beginTransaction() fm.beginTransaction() .add(retainFragment, tag) .add(retainFragment, tag) Loading @@ -46,6 +52,7 @@ public class RetainFragment<T> extends Fragment { public void clearAndRemove(FragmentManager fm) { public void clearAndRemove(FragmentManager fm) { data = null; data = null; cleared = true; if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1 && fm.isDestroyed()) { if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1 && fm.isDestroyed()) { return; return; Loading