onPreExecute作为片段中webview的预加载器

时间:2015-01-03 08:17:05

标签: javascript android android-fragments webview

我试图在将整个页面加载为webview之前显示一个预加载器,但这是一个小问题,我已经做了一个预加载器,但它一直在继续,并且没有结束。

如何在加载页面时告诉脚本停止显示对话框。

    public class EzFragment extends Fragment {

        public ProgressDialog pDialog;


        public EzFragment(){}

        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            new getFeed().execute();

        }
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {

            View rootView = inflater.inflate(R.layout.fragment_ez, container, false);
            WebView myWebView = (WebView) rootView.findViewById(R.id.webView1);

             String summary = "<html><head> <link rel=\"stylesheet\" type=\"text/css\" 
href=\"http://www.example.com/demo/android_connect/assets/style/jquery.fullPage.css\" /></head></html>";
             myWebView.loadData(summary, "text/html", null);


            myWebView.loadUrl("http://www.example.com/demo/android_connect/get_ez_webmob.php");
            WebSettings webSettings = myWebView.getSettings();
            webSettings.setJavaScriptEnabled(true);



            return rootView;
        }


    private class getFeed extends AsyncTask<Void, Void, Document> {
      @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(getActivity());
            pDialog.setTitle("Connect to Server");
            pDialog.setMessage("This process can take a few seconds to a few minutes, depending on your Internet Connection Speed.");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(false);
            pDialog.show();
        }

    @Override
    protected Document doInBackground(Void... arg0) {
        // TODO Auto-generated method stub
        return null;
    }

    }

是否可以将webview添加到Document doInBackground以便在后台加载页面?!

2 个答案:

答案 0 :(得分:1)

  

如何在页面出现时告诉脚本停止显示对话框   装载。

使用onPageFinished关闭ProgressDialog,因为在WebView中完全加载页面时会调用onPageFinished方法:

 myWebView.setWebViewClient(new WebViewClient(){
        //.....
        @Override
        public void onPageFinished(WebView view, String url) {
            Log.d("mytag","Page Loading Finished!");
            super.onPageFinished(myWebView, url);
            // dismiss ProgressDialog here
        }

    });

答案 1 :(得分:0)

@Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        if (pDialog.isShowing()) {
            pDialog.dismiss();
        }

    }

在postexecute中停止对话..