Merge pull request #639 from dbrant/rotate1

Fix display of media detail after screen rotation.
This commit is contained in:
Josephine Lim 2017-05-20 12:01:32 +02:00 committed by GitHub
commit a826ca4049

View file

@ -114,25 +114,6 @@ public class MediaDetailFragment extends Fragment {
licenseList = new LicenseList(getActivity()); licenseList = new LicenseList(getActivity());
Media media = detailProvider.getMediaAtPosition(index);
if (media == null) {
// Ask the detail provider to ping us when we're ready
Timber.d("MediaDetailFragment not yet ready to display details; registering observer");
dataObserver = new DataSetObserver() {
@Override
public void onChanged() {
Timber.d("MediaDetailFragment ready to display delayed details!");
detailProvider.unregisterDataSetObserver(dataObserver);
dataObserver = null;
displayMediaDetails(detailProvider.getMediaAtPosition(index));
}
};
detailProvider.registerDataSetObserver(dataObserver);
} else {
Timber.d("MediaDetailFragment ready to display details");
displayMediaDetails(media);
}
// Progressively darken the image in the background when we scroll detail pane up // Progressively darken the image in the background when we scroll detail pane up
scrollListener = new ViewTreeObserver.OnScrollChangedListener() { scrollListener = new ViewTreeObserver.OnScrollChangedListener() {
@Override @Override
@ -169,6 +150,31 @@ public class MediaDetailFragment extends Fragment {
return view; return view;
} }
@Override public void onResume() {
super.onResume();
Media media = detailProvider.getMediaAtPosition(index);
if (media == null) {
// Ask the detail provider to ping us when we're ready
Timber.d("MediaDetailFragment not yet ready to display details; registering observer");
dataObserver = new DataSetObserver() {
@Override
public void onChanged() {
if (!isAdded()) {
return;
}
Timber.d("MediaDetailFragment ready to display delayed details!");
detailProvider.unregisterDataSetObserver(dataObserver);
dataObserver = null;
displayMediaDetails(detailProvider.getMediaAtPosition(index));
}
};
detailProvider.registerDataSetObserver(dataObserver);
} else {
Timber.d("MediaDetailFragment ready to display details");
displayMediaDetails(media);
}
}
private void displayMediaDetails(final Media media) { private void displayMediaDetails(final Media media) {
//Always load image from Internet to allow viewing the desc, license, and cats //Always load image from Internet to allow viewing the desc, license, and cats
image.setMedia(media); image.setMedia(media);
@ -199,6 +205,9 @@ public class MediaDetailFragment extends Fragment {
@Override @Override
protected void onPostExecute(Boolean success) { protected void onPostExecute(Boolean success) {
detailFetchTask = null; detailFetchTask = null;
if (!isAdded()) {
return;
}
if (success) { if (success) {
extractor.fill(media); extractor.fill(media);