@@ -69,6 +69,7 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
69
69
private boolean isFeaturedImage ;
70
70
MediaDetailAdapter adapter ;
71
71
private Bookmark bookmark ;
72
+ private MediaDetailProvider provider ;
72
73
73
74
public MediaDetailPagerFragment () {
74
75
this (false , false );
@@ -128,6 +129,23 @@ public void onCreate(Bundle savedInstanceState) {
128
129
isFeaturedImage = savedInstanceState .getBoolean ("isFeaturedImage" );
129
130
}
130
131
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 ;
131
149
}
132
150
133
151
@ Override
@@ -136,7 +154,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
136
154
Timber .d ("Returning as activity is destroyed!" );
137
155
return true ;
138
156
}
139
- MediaDetailProvider provider = ( MediaDetailProvider ) getParentFragment ();
157
+
140
158
Media m = provider .getMediaAtPosition (pager .getCurrentItem ());
141
159
switch (item .getItemId ()) {
142
160
case R .id .menu_bookmark_current_image :
@@ -325,7 +343,7 @@ public void notifyDataSetChanged(){
325
343
326
344
@ Override
327
345
public void onPageScrolled (int i , float v , int i2 ) {
328
- if ( getParentFragment (). getActivity () == null ) {
346
+ if ( getActivity () == null ) {
329
347
Timber .d ("Returning as activity is destroyed!" );
330
348
return ;
331
349
}
@@ -346,7 +364,7 @@ public void onPageScrolled(int i, float v, int i2) {
346
364
e .printStackTrace ();
347
365
}
348
366
}
349
- getParentFragment (). getActivity ().supportInvalidateOptionsMenu ();
367
+ getActivity ().invalidateOptionsMenu ();
350
368
}
351
369
352
370
@ Override
@@ -380,11 +398,11 @@ public MediaDetailAdapter(FragmentManager fm) {
380
398
public Fragment getItem (int i ) {
381
399
if (i == 0 ) {
382
400
// See bug https://code.google.com/p/android/issues/detail?id=27526
383
- if ( getParentFragment (). getActivity () == null ) {
401
+ if ( getActivity () == null ) {
384
402
Timber .d ("Skipping getItem. Returning as activity is destroyed!" );
385
403
return null ;
386
404
}
387
- pager .postDelayed (() -> getParentFragment (). getActivity ().supportInvalidateOptionsMenu (), 5 );
405
+ pager .postDelayed (() -> getActivity ().invalidateOptionsMenu (), 5 );
388
406
}
389
407
return MediaDetailFragment .forMedia (i , editable , isFeaturedImage );
390
408
}
@@ -395,7 +413,7 @@ public int getCount() {
395
413
Timber .d ("Skipping getCount. Returning as activity is destroyed!" );
396
414
return 0 ;
397
415
}
398
- return (( MediaDetailProvider ) getParentFragment ()) .getTotalMediaCount ();
416
+ return provider .getTotalMediaCount ();
399
417
}
400
418
}
401
419
}
0 commit comments