WebView gösterildikten sonra ProgressDialog'u kapatın

WebView yüklenirken ProgressDialog'u beklemek için nasıl kullanabilirim?

Bazen myText’in büyük bir metni vardır ve bazı eski cihazlar WebView’i hızlı bir şekilde yükleyemez. WebView yüklenirken ProgressDialog'u göstermek istiyorum ve zaten gösterildiğinde ProgressDialog'u kapatmak istiyorum.

Sahibim:

ProgressDialog dialog = new ProgressDialog(this);
dialog.setTitle("Please wait...");
dialog.setIndeterminate(true) ;
dialog.show();

String myText = "some text";
WebView myWebView = (WebView)findViewById(R.id.webView);
myWebView.loadDataWithBaseURL("", myText, "text/html", "UTF-8", "");

dialog.dismiss();

ProgressDialog'u göstermiyor.

Eğer dismiss kullanmazsam, her zaman ProgressDialog'umu görürüm.

0

6 cevap

AsyncTask öğesini kullanın.

//..onCreate code come here...


 Button button = (Button) findViewById(R.id.button);
     bt.setOnClickListener(new OnClickListener(){
            public void onClick(View v) {
           //TODO Auto-generated method stub
               new LongOperation().execute();//here calling LongOperation class to do `AsyncTask`.
            }

        });

 private class LongOperation extends AsyncTask {
    ProgressDialog dialog; 

     @Override
    protected void onPreExecute() {

     dialog = new ProgressDialog(MainActivity.class);
     dialog.setTitle("Please wait...");
     dialog.setIndeterminate(true) ;
     dialog.show();
     }

    @Override
    protected String doInBackground(Void... params) {

    //background operation comes here..

    }

    @Override
    protected void onPostExecute(String result) {

      //close progressDialog here by calling
         dialog.dismiss();
    }
 }
1
katma
Kodun olmadan söyleyemeyiz.
katma yazar Yuva Raj, kaynak
WebView'imi doInBackground'a koydum. Ancak bu hatayı var: 'AsyncTask # 2' iş parçacığında bir WebView yöntemi çağrıldı. Tüm WebView yöntemleri aynı iş parçacığında çağrılmalıdır. WebView'i nasıl organize etmeliyim?
katma yazar vdmytsyk, kaynak
Senin örnek ile oynadım ve şimdi çalışıyor! Teşekkürler!
katma yazar vdmytsyk, kaynak

AsyncTask öğesini kullanın.

//..onCreate code come here...


 Button button = (Button) findViewById(R.id.button);
     bt.setOnClickListener(new OnClickListener(){
            public void onClick(View v) {
           //TODO Auto-generated method stub
               new LongOperation().execute();//here calling LongOperation class to do `AsyncTask`.
            }

        });

 private class LongOperation extends AsyncTask {
    ProgressDialog dialog; 

     @Override
    protected void onPreExecute() {

     dialog = new ProgressDialog(MainActivity.class);
     dialog.setTitle("Please wait...");
     dialog.setIndeterminate(true) ;
     dialog.show();
     }

    @Override
    protected String doInBackground(Void... params) {

    //background operation comes here..

    }

    @Override
    protected void onPostExecute(String result) {

      //close progressDialog here by calling
         dialog.dismiss();
    }
 }
1
katma
Kodun olmadan söyleyemeyiz.
katma yazar Yuva Raj, kaynak
WebView'imi doInBackground'a koydum. Ancak bu hatayı var: 'AsyncTask # 2' iş parçacığında bir WebView yöntemi çağrıldı. Tüm WebView yöntemleri aynı iş parçacığında çağrılmalıdır. WebView'i nasıl organize etmeliyim?
katma yazar vdmytsyk, kaynak
Senin örnek ile oynadım ve şimdi çalışıyor! Teşekkürler!
katma yazar vdmytsyk, kaynak

Bu kodu, web görünümünü içeren mevcut Java sınıfınıza yerleştirin.

  private class MyWebViewClient extends WebViewClient {

    @Override
    public void onPageFinished(WebView view, String url) {
       //TODO Auto-generated method stub
        super.onPageFinished(view, url);
        if(dialog.isShowing() && dialog != null) {

            dialog.dismiss();
        }
    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {

        super.onPageStarted(view, url, favicon);


        if(!dialog.isShowing() && dialog != null) {

            dialog.show();
        }
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {

        return super.shouldOverrideUrlLoading(view, url);
    }


}

Ve bunu ayarla

    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    myWebView.setWebViewClient(new MyWebViewClient());

altında web görünümünüzü başlattınız

0
katma
loadDataWithBaseURL ("", myText, "text/html", "UTF-8", "") içinde ne yapıyorsunuz?
katma yazar Avinash Kumar Pankaj, kaynak
LoadDataWithBaseURL ("", myText, "text/html", "UTF-8", "") için nasıl kullanılır? ?
katma yazar vdmytsyk, kaynak
String myText = "some text". MyWebView.loadDataWithBaseURL() tarafından myText'i WebView'a yüklüyorum. Benim sorumdaki koda bakın.
katma yazar vdmytsyk, kaynak

Bu kodu, web görünümünü içeren mevcut Java sınıfınıza yerleştirin.

  private class MyWebViewClient extends WebViewClient {

    @Override
    public void onPageFinished(WebView view, String url) {
       //TODO Auto-generated method stub
        super.onPageFinished(view, url);
        if(dialog.isShowing() && dialog != null) {

            dialog.dismiss();
        }
    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {

        super.onPageStarted(view, url, favicon);


        if(!dialog.isShowing() && dialog != null) {

            dialog.show();
        }
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {

        return super.shouldOverrideUrlLoading(view, url);
    }


}

Ve bunu ayarla

    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    myWebView.setWebViewClient(new MyWebViewClient());

altında web görünümünüzü başlattınız

0
katma
loadDataWithBaseURL ("", myText, "text/html", "UTF-8", "") içinde ne yapıyorsunuz?
katma yazar Avinash Kumar Pankaj, kaynak
LoadDataWithBaseURL ("", myText, "text/html", "UTF-8", "") için nasıl kullanılır? ?
katma yazar vdmytsyk, kaynak
String myText = "some text". MyWebView.loadDataWithBaseURL() tarafından myText'i WebView'a yüklüyorum. Benim sorumdaki koda bakın.
katma yazar vdmytsyk, kaynak

sadece bunu dene,

webView.setWebViewClient(new WebViewClient()
    {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url)
        {
            progDailog.show();
            view.loadUrl(url);

            return true;
        }

        @Override
        public void onPageFinished(WebView view, final String url)
        {
            progDailog.dismiss();
        }
    });
0
katma
Çalışmıyor, loadDataWithBaseURL ("", myText, "text/html", "UTF-8", "") kullanmak istiyorum; Ancak, bir yöntem olmalıdırOverrideUrlLoading çalışmıyor.
katma yazar vdmytsyk, kaynak

sadece bunu dene,

webView.setWebViewClient(new WebViewClient()
    {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url)
        {
            progDailog.show();
            view.loadUrl(url);

            return true;
        }

        @Override
        public void onPageFinished(WebView view, final String url)
        {
            progDailog.dismiss();
        }
    });
0
katma
Çalışmıyor, loadDataWithBaseURL ("", myText, "text/html", "UTF-8", "") kullanmak istiyorum; Ancak, bir yöntem olmalıdırOverrideUrlLoading çalışmıyor.
katma yazar vdmytsyk, kaynak