Change summary
src/main/java/eu/siacs/conversations/entities/Conversation.java | 6
src/main/java/eu/siacs/conversations/ui/ConversationFragment.java | 3
src/main/java/eu/siacs/conversations/ui/XmppFragment.java | 43
3 files changed, 49 insertions(+), 3 deletions(-)
Detailed changes
@@ -1388,7 +1388,11 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl
oldConversation.pagerAdapter.mTabs = null;
}
- if (mPager == null) return;
+ if (mPager == null) {
+ page1 = null;
+ page2 = null;
+ return;
+ }
if (sessions != null) show();
if (pager.getChildAt(0) != null) page1 = pager.getChildAt(0);
@@ -1215,7 +1215,7 @@ public class ConversationFragment extends XmppFragment
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
- activity.getOnBackPressedDispatcher().addCallback(backPressedLeaveSingleThread);
+ activity.getOnBackPressedDispatcher().addCallback(this, backPressedLeaveSingleThread);
}
@Override
@@ -1378,6 +1378,7 @@ public class ConversationFragment extends XmppFragment
messageListAdapter.setOnContactPictureClicked(null);
messageListAdapter.setOnContactPictureLongClicked(null);
messageListAdapter.setOnInlineImageLongClicked(null);
+ binding.conversationViewPager.setAdapter(null);
if (conversation != null) conversation.setupViewPager(null, null, false, null);
}
@@ -32,9 +32,15 @@ package eu.siacs.conversations.ui;
import android.app.Activity;
import android.app.Fragment;
+import androidx.lifecycle.Lifecycle;
+import androidx.lifecycle.LifecycleRegistry;
+import androidx.lifecycle.LifecycleOwner;
+
import eu.siacs.conversations.ui.interfaces.OnBackendConnected;
-public abstract class XmppFragment extends Fragment implements OnBackendConnected {
+public abstract class XmppFragment extends Fragment implements OnBackendConnected, LifecycleOwner {
+
+ protected LifecycleRegistry lifecycle = new LifecycleRegistry(this);
abstract void refresh();
public void refreshForNewCaps() { }
@@ -45,4 +51,39 @@ public abstract class XmppFragment extends Fragment implements OnBackendConnecte
activity.runOnUiThread(runnable);
}
}
+
+ @Override
+ public void onStart() {
+ super.onStart();
+ lifecycle.handleLifecycleEvent(Lifecycle.Event.ON_START);
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ lifecycle.handleLifecycleEvent(Lifecycle.Event.ON_RESUME);
+ }
+
+ @Override
+ public void onPause() {
+ lifecycle.handleLifecycleEvent(Lifecycle.Event.ON_PAUSE);
+ super.onPause();
+ }
+
+ @Override
+ public void onStop() {
+ lifecycle.handleLifecycleEvent(Lifecycle.Event.ON_STOP);
+ super.onStop();
+ }
+
+ @Override
+ public void onDestroy() {
+ lifecycle.handleLifecycleEvent(Lifecycle.Event.ON_DESTROY);
+ super.onDestroy();
+ }
+
+ @Override
+ public Lifecycle getLifecycle() {
+ return lifecycle;
+ }
}