在 Android 上使用 asynctask 的 Webview [英] Webview with asynctask on Android

查看:21
本文介绍了在 Android 上使用 asynctask 的 Webview的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想做的是进度对话框等待 webview 上的加载项.dialog.dismiss() 事件取决于 webview 上的加载项,我该怎么做?

i want to do it which the progress dialog waits the loading item on webview. How can i do it which dialog.dismiss() event depend on loading item on 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

在那里我该怎么做??

      dialog.dismiss();

对话框不等而消失

     }
 @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();

}

推荐答案

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

Don't use AsyncTask, as you are not in charge of loading the webview. If you want to show a progress dialog, here is how to do it.

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);
}

这个想法是你显示对话框,你开始加载 url,当 webclient 看到页面已经完成加载时,它关闭对话框.

The idea is that you show the dialog, you start loading the url, and when the webclient sees that the page has finished loading, it dismisses the dialog.

这篇关于在 Android 上使用 asynctask 的 Webview的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆