在Android上使用asynctask的Webview

Ser*_*kan 3 android loading webview android-webview android-asynctask

我想这样做,进度对话框等待webview上的加载项.我怎么能做到哪个dialog.dismiss()事件取决于在webview上加载项目?

    public class asynctask extends  AsyncTask<Void, Void, Void> {

    private ProgressDialog dialog = new ProgressDialog(WebActivity.this);


  @Override
  protected void onPostExecute(Void result) {
      // TODO Auto-generated method stub
Run Code Online (Sandbox Code Playgroud)

在那里我该怎么办?

      dialog.dismiss();
Run Code Online (Sandbox Code Playgroud)

对话消失,无需等待

     }
 @Override 
 protected void onPreExecute() {
      // TODO Auto-generated method stub
        dialog.setMessage("Loading..Please wait.");

        dialog.show();
        dialog.setCanceledOnTouchOutside(false);
     }



@Override
protected Void doInBackground(Void... params) {
      // TODO Auto-generated method stub




      return null;
     }


 @Override
 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


    setContentView(R.layout.webview);

    webView = (WebView) findViewById(R.id.webView1);


    Bundle extras = getIntent().getExtras();
    String url=extras.getString("adres");

    webView.setWebViewClient(new WebViewClient());
    webView.loadUrl(url);



    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);

    new asynctask().execute();
Run Code Online (Sandbox Code Playgroud)

}

njz*_*zk2 20

不要使用AsyncTask,因为您不负责加载webview.如果要显示进度对话框,请按照以下步骤操作.

private ProgressDialog dialog = new ProgressDialog(WebActivity.this);

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.webview);
    webView = (WebView) findViewById(R.id.webView1);

    Bundle extras = getIntent().getExtras();
    String url=extras.getString("adres");

    webView.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url) {                  
            if (dialog.isShowing()) {
                dialog.dismiss();
            }
        }
    });
    dialog.setMessage("Loading..Please wait.");
    dialog.setCanceledOnTouchOutside(false);
    dialog.show();
    webView.loadUrl(url);



    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);
}
Run Code Online (Sandbox Code Playgroud)

这个想法是你显示对话框,你开始加载网址,当webclient看到页面已经完成加载时,它会解除对话框.