@@ -69,6 +69,7 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
6969 private boolean isFeaturedImage ;
7070 MediaDetailAdapter adapter ;
7171 private Bookmark bookmark ;
72+ private MediaDetailProvider provider ;
7273
7374 public MediaDetailPagerFragment () {
7475 this (false , false );
@@ -128,6 +129,23 @@ public void onCreate(Bundle savedInstanceState) {
128129 isFeaturedImage = savedInstanceState .getBoolean ("isFeaturedImage" );
129130 }
130131 setHasOptionsMenu (true );
132+ initProvider ();
133+ }
134+
135+ /**
136+ * initialise the provider, based on from where the fragment was started, as in from an activity
137+ * or a fragment
138+ */
139+ private void initProvider () {
140+ if (getParentFragment () != null ) {
141+ provider = (MediaDetailProvider ) getParentFragment ();
142+ } else {
143+ provider = (MediaDetailProvider ) getActivity ();
144+ }
145+ }
146+
147+ public MediaDetailProvider getMediaDetailProvider () {
148+ return provider ;
131149 }
132150
133151 @ Override
@@ -136,7 +154,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
136154 Timber .d ("Returning as activity is destroyed!" );
137155 return true ;
138156 }
139- MediaDetailProvider provider = ( MediaDetailProvider ) getParentFragment ();
157+
140158 Media m = provider .getMediaAtPosition (pager .getCurrentItem ());
141159 switch (item .getItemId ()) {
142160 case R .id .menu_bookmark_current_image :
@@ -325,7 +343,7 @@ public void notifyDataSetChanged(){
325343
326344 @ Override
327345 public void onPageScrolled (int i , float v , int i2 ) {
328- if ( getParentFragment (). getActivity () == null ) {
346+ if ( getActivity () == null ) {
329347 Timber .d ("Returning as activity is destroyed!" );
330348 return ;
331349 }
@@ -346,7 +364,7 @@ public void onPageScrolled(int i, float v, int i2) {
346364 e .printStackTrace ();
347365 }
348366 }
349- getParentFragment (). getActivity ().supportInvalidateOptionsMenu ();
367+ getActivity ().invalidateOptionsMenu ();
350368 }
351369
352370 @ Override
@@ -380,11 +398,11 @@ public MediaDetailAdapter(FragmentManager fm) {
380398 public Fragment getItem (int i ) {
381399 if (i == 0 ) {
382400 // See bug https://code.google.com/p/android/issues/detail?id=27526
383- if ( getParentFragment (). getActivity () == null ) {
401+ if ( getActivity () == null ) {
384402 Timber .d ("Skipping getItem. Returning as activity is destroyed!" );
385403 return null ;
386404 }
387- pager .postDelayed (() -> getParentFragment (). getActivity ().supportInvalidateOptionsMenu (), 5 );
405+ pager .postDelayed (() -> getActivity ().invalidateOptionsMenu (), 5 );
388406 }
389407 return MediaDetailFragment .forMedia (i , editable , isFeaturedImage );
390408 }
@@ -395,7 +413,7 @@ public int getCount() {
395413 Timber .d ("Skipping getCount. Returning as activity is destroyed!" );
396414 return 0 ;
397415 }
398- return (( MediaDetailProvider ) getParentFragment ()) .getTotalMediaCount ();
416+ return provider .getTotalMediaCount ();
399417 }
400418 }
401419}
0 commit comments