android - webview 中的进度条在页面加载完成后保持加载不隐藏

标签 android android-webview android-progressbar

我在我的 WebView 中显示一个进度对话框 但它没有隐藏在完成的页面上 我浏览了很多所以它说“progress.dismiss()” 但仍然没有解雇 也没有显示加载,我移动到 webview 中的其他页面

我的代码是

public class MainActivity extends ActionBarActivity {
private WebView webView;
private final String TAG = MainActivity.class.getSimpleName();
ConnectivityManager cm;
android.net.NetworkInfo wifi;
android.net.NetworkInfo datac;
@Override
protected void onCreate(Bundle savedInstanceState) {
    this.supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
    cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    wifi = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    datac = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
    if ((wifi != null & datac != null)
            && (wifi.isConnected() | datac.isConnected())) {
        //getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);  //to hide notification bar
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        webView = (WebView)findViewById(R.id.webView);
        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setDomStorageEnabled(true);
        webSettings.setAppCacheEnabled(true);
        webView.setWebViewClient(new WebViewClient(){

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                boolean returnValue=true;
                if ((wifi != null & datac != null)
                        && (wifi.isConnected() | datac.isConnected())) {
                    if ((Uri.parse(url).getHost().contains("www.cbazaar") || Uri.parse(url).getHost().contains("payseal.icicibank")) || Uri.parse(url).getHost().contains("www.ccavenue")
                            || Uri.parse(url).getHost().contains("www.braintreepaments") || Uri.parse(url).getHost().contains("www.sandbox")) {

                        returnValue=false;
                    }

                if(returnValue==true){
                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                view.getContext().startActivity(intent);
                return returnValue;
                }
                }
                return returnValue;
            }
         @Override
            public void onReceivedError(WebView view, int errorCode,
                                      String description, String failingUrl) {
             webView.loadUrl("javascript:history.go(-1)");

          }
            ProgressDialog pd = null;

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
                pd = new ProgressDialog(MainActivity.this);
                pd.setTitle("Please wait");
                pd.setMessage("");
                pd.show();
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                pd.dismiss();
            }
        });

        webView.loadUrl("http://www.cbazaar.com");
    }else{
        //no connection
        setContentView(R.layout.activity_no_internet);
        Button netOnBtn=(Button) findViewById(R.id.netOnButton);
        Button refreshHmeBtn=(Button) findViewById(R.id.refreshHmeBtn);
        netOnBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivityForResult(new Intent(android.provider.Settings.ACTION_SETTINGS), 0);
            }
        });
        refreshHmeBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent gotoMainActivity = new Intent (MainActivity.this,MainActivity.class);
                startActivity(gotoMainActivity);
                finish();
            }
        });

    }
}
// Open previous opened link from history on webview when back button pressed

@Override
// Detect when the back button is pressed
public void onBackPressed() {
    if(webView.canGoBack()) {
        webView.goBack();
    } else {
        // Let the system handle the back button
        super.onBackPressed();
    }
}

有人能帮我解决这个问题吗,或者为什么在移动到其他页面时加载不消失并且不显示

提前致谢,因为这是我的第一个网络应用。

最佳答案

尝试这样的事情:

private void startWebView(String url) {

    MyView.setWebChromeClient(new WebChromeClient() {
        ProgressDialog progressDialog =  new ProgressDialog(MainActivity.this);
        @Override
        public void onProgressChanged(WebView view, int progress) {
            if (progress < 100) {
                // in standard case YourActivity.this

                progressDialog.setMessage("Loading...");
                progressDialog.show();

            }

            if (progress == 100) {
                if (progressDialog.isShowing()) {
                    progressDialog.dismiss();
                    progressDialog = null;
                }
            }
        }
    });


    // Javascript enabled on webview
    webView.getSettings().setJavaScriptEnabled(true);

    //Load url in webview
    webView.loadUrl(url);

}

这样,您就可以在 ProgressDialog 中使用真正的进度条。

关于android - webview 中的进度条在页面加载完成后保持加载不隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29565551/

相关文章:

android - 在我现有的项目 (eclipse) 中导入 CardView 和 RecyclerView (Android 5.0)

android - 致命异常 : main java. lang.StackOverflowError

android - 以编程方式在android中为webview设置代理

android - Web View 不在 android 中显示 html 数据

android - 如何在onClick View 方法中使用两个按钮水平增加和减少进度条(android)

java - 按名称对 GridView 中的项目进行排序

java - 如何替换 AuthorizationCodeInstalledApp 类?

android-webview - mouseup,mouse down在android webview中不起作用

android - 关于 Android 进度对话框。避免?

android - 自定义微调器动画不够流畅 : framesCount and frameDuration error