X-Git-Url: https://gitweb.stoutner.com/?p=PrivacyBrowserAndroid.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fcom%2Fstoutner%2Fprivacybrowser%2Fadapters%2FWebViewPagerAdapter.java;h=52e7234536a22a244cc232b9788112d79c9f7d29;hp=15cfc2cc8795c0731ae3dd96992cbbf84d21ba6a;hb=aba828cabddd0a277271c90816b50292bb64baf1;hpb=d83bd21f11673e7a2332805918885d431ce1938f diff --git a/app/src/main/java/com/stoutner/privacybrowser/adapters/WebViewPagerAdapter.java b/app/src/main/java/com/stoutner/privacybrowser/adapters/WebViewPagerAdapter.java index 15cfc2cc..52e72345 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/adapters/WebViewPagerAdapter.java +++ b/app/src/main/java/com/stoutner/privacybrowser/adapters/WebViewPagerAdapter.java @@ -1,25 +1,26 @@ /* - * Copyright © 2019-2021 Soren Stoutner . + * Copyright © 2019-2022 Soren Stoutner . * - * This file is part of Privacy Browser . + * This file is part of Privacy Browser Android . * - * Privacy Browser is free software: you can redistribute it and/or modify + * Privacy Browser Android is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * - * Privacy Browser is distributed in the hope that it will be useful, + * Privacy Browser Android is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with Privacy Browser. If not, see . + * along with Privacy Browser Android. If not, see . */ 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); } } @@ -134,6 +135,9 @@ public class WebViewPagerAdapter extends FragmentPagerAdapter { // Get the WebView frame layout. FrameLayout webViewFrameLayout = (FrameLayout) webViewTabFragment.getView(); + // Remove the warning below that the WebView frame layout might be null. + assert webViewFrameLayout != null; + // Get a handle for the nested scroll WebView. NestedScrollWebView nestedScrollWebView = webViewFrameLayout.findViewById(R.id.nestedscroll_webview); @@ -161,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