summaryrefslogtreecommitdiffstats
path: root/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonTimeline.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonTimeline.java')
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonTimeline.java28
1 files changed, 25 insertions, 3 deletions
diff --git a/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonTimeline.java b/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonTimeline.java
index 24fa93927..b175eff91 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonTimeline.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/timeline/FragmentMastodonTimeline.java
@@ -187,7 +187,15 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter.
private String lemmy_post_id;
private boolean checkRemotely;
private String accountIDInRemoteInstance;
+ //This value is set to true in onResume meaning that the fragment is visible
private boolean isViewInitialized;
+ //If onResume is called before getting all parameters, needToCallResume will be set to true so it can call safely initializeView()
+ private boolean needToCallResume;
+ //Some operations need to be done once only in onResume, the lockForResumeCall will be incremented to avoid useless calls
+ private int lockForResumeCall;
+ //All timelines that are not pinned - it will take the initial value of isViewInitialized
+ private boolean isNotPinnedTimeline;
+ private boolean bundleParamsRetrieved;
private Statuses initialStatuses;
private String list_id;
private TagTimeline tagTimeline;
@@ -202,8 +210,7 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter.
private boolean canBeFederated;
private boolean rememberPosition;
private String publicTrendsDomain;
- private int lockForResumeCall;
- private boolean isNotPinnedTimeline;
+
//Allow to recreate data when detaching/attaching fragment
@@ -235,6 +242,14 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter.
@Override
public void onResume() {
super.onResume();
+ if(bundleParamsRetrieved) {
+ initializeView();
+ } else {
+ needToCallResume = true;
+ }
+ }
+
+ private void initializeView() {
if (!isViewInitialized) {
isViewInitialized = true;
if (initialStatuses != null) {
@@ -255,6 +270,7 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter.
}
}
+
/**
* Return the position of the status in the ArrayList
*
@@ -359,6 +375,8 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter.
ViewGroup container, Bundle savedInstanceState) {
timelineType = Timeline.TimeLineEnum.HOME;
+ bundleParamsRetrieved = false;
+ needToCallResume = false;
binding = FragmentPaginationBinding.inflate(inflater, container, false);
arguments = getArguments();
return binding.getRoot();
@@ -486,7 +504,11 @@ public class FragmentMastodonTimeline extends Fragment implements StatusAdapter.
//Only fragment in main view pager should not have the view initialized
//AND Only the first fragment will initialize its view
flagLoading = false;
-
+ bundleParamsRetrieved = true;
+ if(needToCallResume) {
+ initializeView();
+ needToCallResume = false;
+ }
ContextCompat.registerReceiver(requireActivity(), receive_action, new IntentFilter(Helper.RECEIVE_STATUS_ACTION), ContextCompat.RECEIVER_NOT_EXPORTED);
}