@@ -105,24 +105,13 @@ public View onCreateView(LayoutInflater inflater,
105
105
((BaseActivity ) getActivity ()).getSupportActionBar ().setDisplayHomeAsUpEnabled (true );
106
106
}
107
107
108
+ pager .setAdapter (adapter );
108
109
if (savedInstanceState != null ) {
109
110
final int pageNumber = savedInstanceState .getInt ("current-page" );
110
- // Adapter doesn't seem to be loading immediately.
111
- // Dear God, please forgive us for our sins
112
- view .postDelayed (() -> {
113
- pager .setAdapter (adapter );
114
- pager .setCurrentItem (pageNumber , false );
115
-
116
- if (getActivity () == null ) {
117
- Timber .d ("Returning as activity is destroyed!" );
118
- return ;
119
- }
111
+ pager .setCurrentItem (pageNumber , false );
112
+ getActivity ().invalidateOptionsMenu ();
113
+ adapter .notifyDataSetChanged ();
120
114
121
- getActivity ().supportInvalidateOptionsMenu ();
122
- adapter .notifyDataSetChanged ();
123
- }, 100 );
124
- } else {
125
- pager .setAdapter (adapter );
126
115
}
127
116
if (getActivity () instanceof MainActivity ) {
128
117
((MainActivity )getActivity ()).hideTabs ();
@@ -332,13 +321,31 @@ private void updateBookmarkState(MenuItem item) {
332
321
333
322
public void showImage (int i , boolean isWikipediaButtonDisplayed ) {
334
323
this .isWikipediaButtonDisplayed = isWikipediaButtonDisplayed ;
335
- Handler handler = new Handler ();
336
- handler .postDelayed (() -> pager .setCurrentItem (i ), 5 );
324
+ setViewPagerCurrentItem (i );
337
325
}
338
326
339
327
public void showImage (int i ) {
340
- Handler handler = new Handler ();
341
- handler .postDelayed (() -> pager .setCurrentItem (i ), 5 );
328
+ setViewPagerCurrentItem (i );
329
+ }
330
+
331
+ /**
332
+ * This function waits for the item to load then sets the item to current item
333
+ * @param position current item that to be shown
334
+ */
335
+ private void setViewPagerCurrentItem (int position ) {
336
+ final Boolean [] currentItemNotShown = {true };
337
+ Runnable runnable = new Runnable () {
338
+ @ Override
339
+ public void run () {
340
+ while (currentItemNotShown [0 ]){
341
+ if (adapter .getCount () > position ){
342
+ pager .setCurrentItem (position , false );
343
+ currentItemNotShown [0 ] = false ;
344
+ }
345
+ }
346
+ }
347
+ };
348
+ new Thread (runnable ).start ();
342
349
}
343
350
344
351
/**
0 commit comments