Bug fix, issue #2029 (#2036)

* Initialise MediaDetailProvider in based on its type as in activity or fragment
This commit is contained in:
Ashish Kumar 2018-11-27 00:08:04 +05:30 committed by neslihanturan
parent a248e6114c
commit 48812c7c13
2 changed files with 35 additions and 9 deletions

View file

@ -146,8 +146,11 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment {
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
detailProvider = (MediaDetailPagerFragment.MediaDetailProvider) (getParentFragment().getParentFragment()); if (getParentFragment() != null
&& getParentFragment() instanceof MediaDetailPagerFragment) {
detailProvider =
((MediaDetailPagerFragment) getParentFragment()).getMediaDetailProvider();
}
if (savedInstanceState != null) { if (savedInstanceState != null) {
editable = savedInstanceState.getBoolean("editable"); editable = savedInstanceState.getBoolean("editable");
isCategoryImage = savedInstanceState.getBoolean("isCategoryImage"); isCategoryImage = savedInstanceState.getBoolean("isCategoryImage");
@ -212,7 +215,12 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment {
@Override @Override
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
((ContributionsFragment)(getParentFragment().getParentFragment())).nearbyNoificationCardView.setVisibility(View.GONE); if(getParentFragment()!=null && getParentFragment().getParentFragment()!=null) {
//Added a check because, not necessarily, the parent fragment will have a parent fragment, say
// in the case when MediaDetailPagerFragment is directly started by the CategoryImagesActivity
((ContributionsFragment) (getParentFragment().getParentFragment())).nearbyNoificationCardView
.setVisibility(View.GONE);
}
media = detailProvider.getMediaAtPosition(index); media = detailProvider.getMediaAtPosition(index);
if (media == null) { if (media == null) {
// Ask the detail provider to ping us when we're ready // Ask the detail provider to ping us when we're ready

View file

@ -69,6 +69,7 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
private boolean isFeaturedImage; private boolean isFeaturedImage;
MediaDetailAdapter adapter; MediaDetailAdapter adapter;
private Bookmark bookmark; private Bookmark bookmark;
private MediaDetailProvider provider;
public MediaDetailPagerFragment() { public MediaDetailPagerFragment() {
this(false, false); this(false, false);
@ -128,6 +129,23 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
isFeaturedImage = savedInstanceState.getBoolean("isFeaturedImage"); isFeaturedImage = savedInstanceState.getBoolean("isFeaturedImage");
} }
setHasOptionsMenu(true); setHasOptionsMenu(true);
initProvider();
}
/**
* initialise the provider, based on from where the fragment was started, as in from an activity
* or a fragment
*/
private void initProvider() {
if (getParentFragment() != null) {
provider = (MediaDetailProvider) getParentFragment();
} else {
provider = (MediaDetailProvider) getActivity();
}
}
public MediaDetailProvider getMediaDetailProvider() {
return provider;
} }
@Override @Override
@ -136,7 +154,7 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
Timber.d("Returning as activity is destroyed!"); Timber.d("Returning as activity is destroyed!");
return true; return true;
} }
MediaDetailProvider provider = (MediaDetailProvider) getParentFragment();
Media m = provider.getMediaAtPosition(pager.getCurrentItem()); Media m = provider.getMediaAtPosition(pager.getCurrentItem());
switch (item.getItemId()) { switch (item.getItemId()) {
case R.id.menu_bookmark_current_image: case R.id.menu_bookmark_current_image:
@ -325,7 +343,7 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
@Override @Override
public void onPageScrolled(int i, float v, int i2) { public void onPageScrolled(int i, float v, int i2) {
if(getParentFragment().getActivity() == null) { if (getActivity() == null) {
Timber.d("Returning as activity is destroyed!"); Timber.d("Returning as activity is destroyed!");
return; return;
} }
@ -346,7 +364,7 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
e.printStackTrace(); e.printStackTrace();
} }
} }
getParentFragment().getActivity().supportInvalidateOptionsMenu(); getActivity().invalidateOptionsMenu();
} }
@Override @Override
@ -380,11 +398,11 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
public Fragment getItem(int i) { public Fragment getItem(int i) {
if (i == 0) { if (i == 0) {
// See bug https://code.google.com/p/android/issues/detail?id=27526 // See bug https://code.google.com/p/android/issues/detail?id=27526
if(getParentFragment().getActivity() == null) { if (getActivity() == null) {
Timber.d("Skipping getItem. Returning as activity is destroyed!"); Timber.d("Skipping getItem. Returning as activity is destroyed!");
return null; return null;
} }
pager.postDelayed(() -> getParentFragment().getActivity().supportInvalidateOptionsMenu(), 5); pager.postDelayed(() -> getActivity().invalidateOptionsMenu(), 5);
} }
return MediaDetailFragment.forMedia(i, editable, isFeaturedImage); return MediaDetailFragment.forMedia(i, editable, isFeaturedImage);
} }
@ -395,7 +413,7 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
Timber.d("Skipping getCount. Returning as activity is destroyed!"); Timber.d("Skipping getCount. Returning as activity is destroyed!");
return 0; return 0;
} }
return ((MediaDetailProvider) getParentFragment()).getTotalMediaCount(); return provider.getTotalMediaCount();
} }
} }
} }