2013-01-02 46 views
3

的AsyncTask我想这样做,其进度对话框将等待的WebView加载项。我如何能做到这一点,其dialog.dismiss()事件取决于负载项目上的WebView网页视图与Android

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

}

回答

18

不要使用的AsyncTask,因为你不负责加载网页流量的。如果你想显示一个进度对话框,这里是如何做到这一点。

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发现页面已经完成加载时,它会关闭对话框。

+1

感谢分享代码。 –

+0

重定向怎么样? – Skynet