【问题标题】:Webview with asynctask on Android在 Android 上使用 asynctask 的 Webview
【发布时间】:2013-01-02 12:31:36
【问题描述】:

我想这样做,进度对话框等待 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

在里面怎么办??

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

}

【问题讨论】:

    标签: android webview android-asynctask android-webview loading


    【解决方案1】:

    不要使用 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);
    }
    

    想法是显示对话框,开始加载 url,当 web 客户端看到页面已完成加载时,它会关闭对话框。

    【讨论】:

    • 感谢分享代码。
    • 重定向怎么样?
    猜你喜欢
    • 2014-09-15
    • 1970-01-01
    • 2017-05-22
    • 1970-01-01
    • 2014-01-07
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多