【问题标题】:Toast in webview not disappear onProgresseChangedwebview 中的 Toast 不会消失 onProgressChanged
【发布时间】:2013-11-07 14:51:02
【问题描述】:

在我的 web 视图中,我想在页面加载时创建一个 toast,当进度为 100% 时,我希望 toast 消失.. 实际上不起作用。这是代码

webview.setWebChromeClient(new WebChromeClient(){

                public void onProgressChanged(WebView view, int progress) {
                    activity.setTitle("Loading...");
                    activity.setProgress(progress * 100);
                    Toast toast = Toast.makeText(MainActivity.this, "Loading...",Toast.LENGTH_LONG);
                    toast.show();
                    if(progress == 100)
                    setProgressBarIndeterminateVisibility(false);
                    activity.setTitle("My WebView");
                    toast.cancel();
                }
            });

通过这种方式,吐司不会出现在网页上我加载页面...如果我删除toast.cancel();,吐司会出现但永远不会消失。我该如何解决?

【问题讨论】:

    标签: android webview android-webview android-toast


    【解决方案1】:

    这样试试

    public void onProgressChanged(WebView view, int progress) {
                            activity.setTitle("Loading...");
                            activity.setProgress(progress * 100);
    
                            if(progress == 100)
                               {
                            Toast toast = Toast.makeText(MainActivity.this, "Finish...",Toast.LENGTH_LONG);
                            toast.show();
                               }
                            setProgressBarIndeterminateVisibility(false);
                            activity.setTitle("My WebView");
                        }
                    });
    

    否则试试这样,

    this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
                setContentView(R.layout.info);
    
                mProgressDialog = new ProgressDialog(this);
                mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                mProgressDialog.setMessage("Please wait...");
                mProgressDialog.setCancelable(false);
                mProgressDialog.setMax(100);
                mProgressDialog.show();
    
                WebView webView = (WebView) findViewById(R.id.webview);
                webView.setVisibility(View.VISIBLE);
                webView.getSettings().setJavaScriptEnabled(true);
    
                webView.setWebChromeClient(new WebChromeClient() {
                    public void onProgressChanged(WebView view, final int progress)
                    {
                        activity.setTitle("Loading...");
                        activity.setProgress(progress * 100);
                        mProgressDialog.setProgress(progress );
    
    
    
    
                        if(progress == 100)
                        {
                            activity.setTitle(R.string.app_name);
                            mProgressDialog.dismiss();
                        Toast toast = Toast.makeText(MainActivity.this, "Finish...",Toast.LENGTH_LONG);
                            toast.show();
                        }
    
                    }
                });
    
                webView.setWebViewClient(new WebViewClient() {
                    @Override
                    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
                    {
                    }
    
                    @Override
                    public boolean shouldOverrideUrlLoading(WebView view, String url)
                    {
                        view.loadUrl(url);
                        return true;
                    }
                });
    

    【讨论】:

    • 这个想法是不同的..你在完成加载后写吐司..好吧,这是另一种方式,对我来说没关系..但现在进度条没有出现(我的意思是使用第一个您发布的代码)。我如何在加载页面时始终显示它?
    • 我解决了将setProgressBarIndeterminateVisibility(false); 放在 if 条件中的问题,就像吐司一样。好吧,现在很好:) 但我不知道为什么我只能看到第一个加载页面的进度条。如果我点击某些链接没有出现
    猜你喜欢
    • 2013-09-05
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多