]> gitweb.stoutner.com Git - PrivacyBrowserAndroid.git/blobdiff - app/src/main/java/com/stoutner/privacybrowser/adapters/WebViewPagerAdapter.java
Fix the ViewPager not always moving to new tabs. https://redmine.stoutner.com/issues/798
[PrivacyBrowserAndroid.git] / app / src / main / java / com / stoutner / privacybrowser / adapters / WebViewPagerAdapter.java
index a3095617cde308fbb1e0d0b67cfb2cf3257f11f3..52e7234536a22a244cc232b9788112d79c9f7d29 100644 (file)
@@ -20,6 +20,7 @@
 package com.stoutner.privacybrowser.adapters;
 
 import android.os.Bundle;
+import android.os.Handler;
 import android.widget.FrameLayout;
 
 import androidx.annotation.NonNull;
@@ -115,7 +116,7 @@ public class WebViewPagerAdapter extends FragmentPagerAdapter {
 
         // Move to the new page if indicated.
         if (moveToNewPage) {
-            webViewPager.setCurrentItem(pageNumber);
+            moveToNewPage(pageNumber, webViewPager);
         }
     }
 
@@ -164,4 +165,24 @@ public class WebViewPagerAdapter extends FragmentPagerAdapter {
         // Return the page fragment.
         return webViewFragmentsList.get(pageNumber);
     }
+
+    private void moveToNewPage(int pageNumber, ViewPager webViewPager) {
+        // Check to see if the new page has been populated.
+        if (webViewPager.getChildCount() >= pageNumber) {  // The new page is ready.
+            // Move to the new page.
+            webViewPager.setCurrentItem(pageNumber);
+        } else {  // The new page is not yet ready.
+            // Create a handler.
+            Handler moveToNewPageHandler = new Handler();
+
+            // Create a runnable.
+            Runnable moveToNewPageRunnable = () -> {
+                // Move to the new page.
+                webViewPager.setCurrentItem(pageNumber);
+            };
+
+            // Try again to move to the new page after 50 milliseconds.
+            moveToNewPageHandler.postDelayed(moveToNewPageRunnable, 50);
+        }
+    }
 }
\ No newline at end of file