Skip to content

Commit a826ca4

Browse files
authored
Merge pull request commons-app#639 from dbrant/rotate1
Fix display of media detail after screen rotation.
2 parents 75cbd0a + 96f9526 commit a826ca4

File tree

1 file changed

+28
-19
lines changed

1 file changed

+28
-19
lines changed

app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java

+28-19
Original file line numberDiff line numberDiff line change
@@ -114,25 +114,6 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa
114114

115115
licenseList = new LicenseList(getActivity());
116116

117-
Media media = detailProvider.getMediaAtPosition(index);
118-
if (media == null) {
119-
// Ask the detail provider to ping us when we're ready
120-
Timber.d("MediaDetailFragment not yet ready to display details; registering observer");
121-
dataObserver = new DataSetObserver() {
122-
@Override
123-
public void onChanged() {
124-
Timber.d("MediaDetailFragment ready to display delayed details!");
125-
detailProvider.unregisterDataSetObserver(dataObserver);
126-
dataObserver = null;
127-
displayMediaDetails(detailProvider.getMediaAtPosition(index));
128-
}
129-
};
130-
detailProvider.registerDataSetObserver(dataObserver);
131-
} else {
132-
Timber.d("MediaDetailFragment ready to display details");
133-
displayMediaDetails(media);
134-
}
135-
136117
// Progressively darken the image in the background when we scroll detail pane up
137118
scrollListener = new ViewTreeObserver.OnScrollChangedListener() {
138119
@Override
@@ -169,6 +150,31 @@ public void onGlobalLayout() {
169150
return view;
170151
}
171152

153+
@Override public void onResume() {
154+
super.onResume();
155+
Media media = detailProvider.getMediaAtPosition(index);
156+
if (media == null) {
157+
// Ask the detail provider to ping us when we're ready
158+
Timber.d("MediaDetailFragment not yet ready to display details; registering observer");
159+
dataObserver = new DataSetObserver() {
160+
@Override
161+
public void onChanged() {
162+
if (!isAdded()) {
163+
return;
164+
}
165+
Timber.d("MediaDetailFragment ready to display delayed details!");
166+
detailProvider.unregisterDataSetObserver(dataObserver);
167+
dataObserver = null;
168+
displayMediaDetails(detailProvider.getMediaAtPosition(index));
169+
}
170+
};
171+
detailProvider.registerDataSetObserver(dataObserver);
172+
} else {
173+
Timber.d("MediaDetailFragment ready to display details");
174+
displayMediaDetails(media);
175+
}
176+
}
177+
172178
private void displayMediaDetails(final Media media) {
173179
//Always load image from Internet to allow viewing the desc, license, and cats
174180
image.setMedia(media);
@@ -199,6 +205,9 @@ protected Boolean doInBackground(Void... voids) {
199205
@Override
200206
protected void onPostExecute(Boolean success) {
201207
detailFetchTask = null;
208+
if (!isAdded()) {
209+
return;
210+
}
202211

203212
if (success) {
204213
extractor.fill(media);

0 commit comments

Comments
 (0)