Intereting Posts
ConnectivityManager getNetworkInfo (int) устарел Как изменить размер шрифта и цвет шрифта из файла Java? Как изменить цвет TabIndicater в PagerTabStrip Java / Android – проверка строки JSON по строковой схеме Универсальный загрузчик изображений – удаление одного изображения из кеша не работает Выбор файла изображения из галереи с помощью FileProvider Включить Android-Bluetooth из документации Android Studio: значок приложения не отображается в главном экране или списке приложений. Приложение несовместимо с Nexus7, работающим с Marshmallow Как установить стиль шрифта полужирным, курсивом и подчеркнутым в Android TextView? Android – добавить файлы в пакет APK? Оценочные маяки – разница между слушателями мониторинга и ранжирования Кнопка закрытия кнопки закрытия даже при использовании FragmentTransaction.addToBackStack () Пользовательская панель быстрого поиска Listview в Android Идеальный способ установки глобального обработчика исключенных исключений в Android

Как отключить мой диалог прогресса после загрузки webview?

Что мне нужно для моего кода, чтобы отключить диалог dismiss() после загрузки веб-представления?

 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); CookieSyncManager.createInstance(this); CookieSyncManager.getInstance().startSync(); webview = (WebView) findViewById(R.id.webview); webview.setWebViewClient(new homeClient()); webview.getSettings().setJavaScriptEnabled(true); webview.getSettings().setPluginsEnabled(true); webview.loadUrl("http://google.com"); ProgressDialog pd = ProgressDialog.show(Home.this, "", "Loading. Please wait...", true); } 

я пробовал

 public void onPageFinshed(WebView view, String url){ pd.dismiss(); } 

Не работает.

Solutions Collecting From Web of "Как отключить мой диалог прогресса после загрузки webview?"

: O webview.setWebViewClient (новый homeClient ()); HomeClient () ????

попробуй это

 ... ... ... webview = (WebView) findViewById(R.id.webview); webview.setWebViewClient(new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } public void onPageFinished(WebView view, String url) { if (progressBar.isShowing()) { progressBar.dismiss(); } } webview.loadUrl("http://www.google.com"); } 

Update: это хороший пример.

Android WebView и решение для неопределенного прогресса

Хорошо.

 public class WordActivity extends Activity { private WebView webview; private ProgressDialog progressDialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.webview); Bundle objetbunble = this.getIntent().getExtras(); webview = (WebView) findViewById(R.id.webview); final Activity activity = this; webview.getSettings().setJavaScriptEnabled(true); webview.setWebViewClient(new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } public void onLoadResource (WebView view, String url) { if (progressDialog == null) { progressDialog = new ProgressDialog(activity); progressDialog.setMessage("Chargement en cours"); progressDialog.show(); } } public void onPageFinished(WebView view, String url) { if (progressDialog.isShowing()) { progressDialog.dismiss(); progressDialog = null; } } }); webview.loadUrl("http://www.example.com"); } } 

@Jorgesys это не на 100% точно. Если на странице есть несколько фреймов, у вас будет несколько onPageFinished (и onPageStarted). И если у вас есть несколько перенаправлений, это может также потерпеть неудачу. Этот подход, я думаю, решает все проблемы:

 boolean loadingFinished = true; boolean redirect = false; mWebView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String urlNewString) { if (!loadingFinished) { redirect = true; } loadingFinished = false; webView.loadUrl(urlNewString); return true; } @Override public void onPageStarted(WebView view, String url) { loadingFinished = false; //SHOW LOADING IF IT ISNT ALREADY VISIBLE } @Override public void onPageFinished(WebView view, String url) { if(!redirect){ loadingFinished = true; } if(loadingFinished && !redirect){ //HIDE LOADING IT HAS FINISHED } else{ redirect = false; } } }); 

Как вы onPageFinshed() доступ к pd в onPageFinshed() ? (И вы уверены, что это действительно вызвано, когда страница загружается?)

В своем onCreate() попробуйте передать pd на ваш homeClient чтобы homeClient мог позаботиться об увольнении диалога.

Ваш homeClient должен выглядеть следующим образом:

 private class homeClient extends WebViewClient { private ProgressDialog pd; public homeClient(ProgressDialog pd) { this.pd = pd; } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } @Override public void onPageFinished (WebView view, String url) { if (pd.isShowing()) { pd.dismiss(); } } } 

В вашем onCreate() :

 ProgressDialog pd = ProgressDialog.show(Fbook.this, "", "Loading. Please wait...", true); webview.setWebViewClient(new homeClient(pd)); 

Если вы просто хотите показать «Прогресс» перед загрузкой веб-страницы в WebView. Вы можете просто запросить ход функции окна, например

 getWindow().requestFeature(Window.FEATURE_PROGRESS); 

Перед setContentView(R.layout.blahblah);

И показать его прогресс в onProgressChanged, как

  final Activity context= this; webview.setWebChromeClient(new WebChromeClient() { public void onProgressChanged(WebView webView, int progress) { activity.setProgress(progress * 1000); } }); 

И если вы хотите добавить свой собственный ProgressDialog, используйте WebviewClient

 webView.setWebViewClient(new WebViewClient() { ProgressDialog rogressDialog ; @Override public void onPageStarted(WebView view, String url, Bitmap bitmap) { progressDialog = ProgressDialog.show(context, "Loading...", "Please wait...");//where context = YourActivity.this; super.onPageStarted(view, url, bitmap); } @Override public void onPageFinished(WebView view, String url) { progressDialog .dismiss(); super.onPageFinished(view, url); } }); webView.loadUrl(url); 
 wv1.setWebViewClient(new WebViewClient() { public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { Toast.makeText(Entertainment.this, description, Toast.LENGTH_SHORT).show(); } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { progressDialog.show(); } @Override public void onPageFinished(WebView view, String url) { progressDialog.dismiss(); String webUrl = wv1.getUrl(); } }); wv1.loadUrl(url); 

В приведенном выше коде будет показан диалог прогресса для каждой входящей ссылки, которую вы переходите в веб-просмотр.