Java 进度对话框不显示';t消失,似乎中断了URL加载

Java 进度对话框不显示';t消失,似乎中断了URL加载,java,android,Java,Android,我有一个WebView,当它加载一个站点时,会显示一个ProgressDialog。当你第一次打开应用程序时,它可以正常工作,但当你点击一个链接时,它就会出现,直到你点击它的外部,它才会消失。用户单击的链接似乎也没有加载,但当我删除ProgressDialog的代码时,它工作正常 提前谢谢 package *package URL*; import android.app.ProgressDialog; import android.os.Bundle; import android.app.

我有一个WebView,当它加载一个站点时,会显示一个ProgressDialog。当你第一次打开应用程序时,它可以正常工作,但当你点击一个链接时,它就会出现,直到你点击它的外部,它才会消失。用户单击的链接似乎也没有加载,但当我删除ProgressDialog的代码时,它工作正常

提前谢谢

package *package URL*;

import android.app.ProgressDialog;
import android.os.Bundle;
import android.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;


public class TabFragment1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,                 Bundle savedInstanceState) {
    View mainView = (View) inflater.inflate(R.layout.fragment_tab_fragment1, container, false);

    WebView webViewNews = (WebView) mainView.findViewById(R.id.webViewNews);

    webViewNews.getSettings().setJavaScriptEnabled(true);
    webViewNews.setVerticalScrollBarEnabled(false);
    webViewNews.setHorizontalFadingEdgeEnabled(false);

    final ProgressDialog pd=new ProgressDialog(getActivity());
    webViewNews.setWebViewClient(new WebViewClient() {
        public void onPageFinished(WebView view, String url) {
            pd.dismiss();
        }
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            pd.show();
            return true;
        }
    });
    // this is necessary for "alert()" to work
    webViewNews.setWebChromeClient(new WebChromeClient());

    // load a page to get things started
    pd.show();

    webViewNews.loadUrl("http://google.com");
    return mainView;
}

}

我用onPageStarted和onPageFinished替换了shouldOverrideUrlLoading。出于美观原因,我还决定使用微调器更改ProgressDialog。以下是我如何做到这一点的说明

在布局中添加微调器(也是微调器的包装器,但不是必需的)

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#cc111111"
    android:id="@+id/pbWrapper">
    <ProgressBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/progressBar"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:elevation="1000dp"/>
</RelativeLayout>
然后您需要找到微调器(和包装器)

最后,根据WebView中是否有更改显示和隐藏微调器(和包装器)

webViewNews.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageStarted(WebView mainView, String url, Bitmap favicon) {
            mPbar.setVisibility(View.VISIBLE);
            mPbarWrap.setVisibility(View.VISIBLE);
        }

        public void onPageFinished(WebView view, String url) {
            mPbar.setVisibility(View.GONE);
            mPbarWrap.setVisibility(View.GONE);
        }
    });
希望这有帮助

mPbar = (ProgressBar) mainView.findViewById(R.id.progressBar);
mPbarWrap = (RelativeLayout) mainView.findViewById(R.id.pbWrapper);
webViewNews.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageStarted(WebView mainView, String url, Bitmap favicon) {
            mPbar.setVisibility(View.VISIBLE);
            mPbarWrap.setVisibility(View.VISIBLE);
        }

        public void onPageFinished(WebView view, String url) {
            mPbar.setVisibility(View.GONE);
            mPbarWrap.setVisibility(View.GONE);
        }
    });