【问题标题】:How to show full screen loading spinner for webview in android Fragment?如何在android Fragment中为webview显示全屏加载微调器?
【发布时间】:2014-08-25 06:56:34
【问题描述】:

我正在开发一个应用程序,它有一个片段可以在 webview 上显示网站。对于慢速连接,加载网站需要一些时间,并且应用程序会在几秒钟内变为空白,所以我想在我的片段中显示一个全屏加载微调器。我找到了源代码,但我不知道如何在我的扩展片段的类中实现它。

这是我想要在显示网站之前显示全屏加载的片段。

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View V = inflater.inflate(R.layout.fragment_a, container, false);

        String url="http://www.hotelsearcher.net/";
        Bundle args = getArguments();
        if (args  != null){
            url = args.getString("position");
        }
        WebView webView= (WebView) V.findViewById(R.id.webView1);
        WebSettings webViewSettings = webView.getSettings();
        webViewSettings.setJavaScriptCanOpenWindowsAutomatically(true);
        webViewSettings.setJavaScriptEnabled(true);
        webViewSettings.setPluginState(PluginState.ON);
        webView.setWebViewClient(new WebViewClient());
        adview =(AdView) V.findViewById(R.id.ads);
        Ads.loadAds(adview);
        webView.loadUrl(url);
        return V;

    }
}

我发现这是代码:https://gist.github.com/daichan4649/5344979/download#

谁能告诉我应该写什么。实现该功能。

【问题讨论】:

    标签: android android-fragments webview


    【解决方案1】:

    在您的onCreateView() 中,您需要显示ProgressBar,因为您的webView.loadUrl(url) 需要时间来加载您的WebView 上的互联网内容。因此,当您的WebView 完成加载您的内容时,您需要注册回电。你可以这样听:

    mWebView.setWebViewClient(new WebViewClient() {
    
       public void onPageFinished(WebView view, String url) {
            // Cancel your ProgressBar here
        }
    });
    

    在您的onPageFinished() 内取消您的ProgressBar,因为您的WebView 已完成加载内容。

    工作代码

    public class MainActivity extends Activity {
    
        private String url = "https://www.google.co.in/";
        ProgressDialog pb;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            pb = new ProgressDialog(this);
            pb.setTitle("Connecting Station");
            pb.setMessage("Please Wait....");
            pb.setCancelable(false);
            pb.show();
            WebView webView = (WebView) findViewById(R.id.webView);
            WebSettings webViewSettings = webView.getSettings();
            webViewSettings.setJavaScriptCanOpenWindowsAutomatically(true);
            webViewSettings.setJavaScriptEnabled(true);
            webViewSettings.setPluginState(PluginState.ON);
            webView.loadUrl(url);
            webView.setWebViewClient(new WebViewClient() {
    
                public void onPageFinished(WebView view, String url) {
                    pb.dismiss();
                }
            });
        }
    }
    

    【讨论】:

    • 请看看这个..应用程序崩溃..docs.google.com/document/d/…
    • @MuhidulHassan 请发布您的 Logcat 以及 ProgressBar 代码。
    • 我在这里更新了文档:docs.google.com/document/d/… 请注意,我只想全屏显示加载微调器..
    • 嗨..你找到解决办法了吗?
    • @MuhidulHassan 是的,您将应用程序的上下文传递给您的ProgressDialog,而不是传递您的 Actvitiy 的上下文。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-23
    • 2021-01-21
    • 1970-01-01
    • 2010-09-09
    • 2021-12-05
    • 2022-12-12
    • 1970-01-01
    相关资源
    最近更新 更多