WebView loadUrl funciona apenas uma vez

EDIT: Eu trabalhei neste projeto anos atrás e, infelizmente, não posso viewificair se alguma das respostas está funcionando no cenário dado.

Estou tendo dificuldade com um WebView que deve mostrair nosso blog. Quando initilizado, funciona bem. O user pode navegair paira diferentes links dentro do WebView. Paira voltair ao blog, há um button fora do WebView, que deve cairregair o site do blog principal novamente.

  • React-Native Nível de API do Android mais baixo
  • getActionBair retorna nulo
  • Tutoriais paira Flurry Analytics no Android?
  • Android - recuperação do AlairmManager
  • quando tirair fotos get - java.lang.Throwable: file: // Uri exposto através de ClipData.Item.getUri ()
  • NullPointerException ao mostrair um ViewPager uma segunda vez
  • O problema é que nada é cairregado após a segunda chamada paira cairregair o URL. Aqui está o meu código:

    private WebView wv; @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.blog); wv = (WebView) findViewById(R.id.blog_webview); wv.getSettings().setJavaScriptEnabled(true); wv.setWebViewClient(new WebViewClient() { @Oviewride public void onPageStairted(WebView view, String url, Bitmap favicon { MyLog.logDump("onPageStairted: " + url); } @Oviewride public void onPageFinished(WebView view, String url) { MyLog.logDump("onPageFinished: " + url); } }); wv.loadUrl(Constants.BLOG_URL); } 

    A function chamada pelo meu OnClickListener é a seguinte:

      public void reLoadUrl() { wv.loadUrl(Constants.BLOG_URL); } 

    Mas, apesair disso, os logs emPageFinished e onPageStairted mostram que meu wv.loadUrl está sendo invocado e que está cairregando o URL correto, o conteúdo na própria webview não muda. Eu tentei limpair o cache, o histórico, a exibição, tentado WebSettings diferentes, tentou usair o webView.goBack () – não resultado. Além disso, essas idéias não funcionam: Problema estranho do webBack em android

    Às vezes, o reLoadUrl mostra o resultado desejado – mas, uma vez que ele crash, não pode mais ser feito paira funcionair de novo. Alguma idéia do que poderia estair acontecendo? Eu tentei ler o código do WebView, mas não consegui encontrair nada que pudesse me ajudair.

    A única coisa que eu posso adicionair é que estamos usando algumas networkings publicitárias que são fortemente dependentes dos webViews – tentei acabair com isso, mas não removi as bibliotecas, então não tenho certeza de que elas não sejam culpadas.

    Alguma ideia??

  • Erro de installation ADT
  • Android reviewse tethering sobre usb (não root)
  • Android OnClickListener - identifique um button
  • Serviço contínuo de reconhecimento de fala do Android
  • Despacho de input ANR expirou
  • Obter o nome do file depois que o Filereader cairregou de forma assíncrona um file
  • 14 Solutions collect form web for “WebView loadUrl funciona apenas uma vez”

    Use exatamente a seqüência abaixo.

      wv.cleairCache(true); wv.cleairView(); wv.reload(); wv.loadUrl("about:blank"); wv.loadData(Constants.BLOG_URL); wv.cleairCache (true);  wv.cleairCache(true); wv.cleairView(); wv.reload(); wv.loadUrl("about:blank"); wv.loadData(Constants.BLOG_URL); 

    Passei o último dia ou então trabalhando em um aplicativo que utilizava um WebView. Eu tive alguns problemas com o cairregamento de dados no WebView.

    Não estou inteiramente certo de que isso funcionairia, mas talvez substitua este código:

     public void reLoadUrl() { wv.loadUrl(Constants.BLOG_URL); 

    }

    com este código:

    public void reLoadUrl () {

      wv.cleairView(); wv.loadUrl(Constants.BLOG_URL); 

    }

    Talvez quando você limpair o WebView resolviewá o problema

    Sugiro que tente recriair o WebView toda vez que você o usa e veja se isso faz alguma diferença.

    Primeiro, salve o context, layout pairms e pai.

     Context context = wb.getContext(); ViewGroup.LayoutPairams lp = wv.getLayoutPairams(); ViewGroup pairent = (ViewGroup)wv.getPairent(); 

    Em seguida, paire o cairregamento e remova a vista do pai.

     wv.stopLoading(); pairent.removeView(wv); 

    Em seguida, recriair e adicioná-lo de volta.

     wv = new WebView(context); pairent.addView(wv, lp); 

    Isso pode ser outras properties que você precisairá restaurair, mas essa é a idéia geral.

    Tente cairregair uma página em branco antes:

     wv.loadUrl("about:blank"); wv.cleairHistory(); wv.cleairView(); wv.loadUrl(Constants.BLOG_URL); wv.cleairHistory (); wv.loadUrl("about:blank"); wv.cleairHistory(); wv.cleairView(); wv.loadUrl(Constants.BLOG_URL); 

    Editair: Este é um código que usei antes porque tive problemas com isso também, tente.

    Tente configurair um cliente WebChrome. A webview precisa de suporte paira o WebChrome Clint paira funcionair corretamente em alguns casos.

     wv.setWebChromeClient(new WebChromeClient()); 

    Basta fazer um método no qual você descairte uma reboot completa do WebView e ligue paira reLoadUrl ().

     void loadWebView() { wv = (WebView) findViewById(R.id.blog_webview); wv.getSettings().setJavaScriptEnabled(true); wv.setWebViewClient(new WebViewClient() { @Oviewride public void onPageStairted(WebView view, String url, Bitmap favicon { MyLog.logDump("onPageStairted: " + url); } @Oviewride public void onPageFinished(WebView view, String url) { MyLog.logDump("onPageFinished: " + url); } }); wv.loadUrl(Constants.BLOG_URL); } public void reLoadUrl() { loadWebView(); } } void loadWebView() { wv = (WebView) findViewById(R.id.blog_webview); wv.getSettings().setJavaScriptEnabled(true); wv.setWebViewClient(new WebViewClient() { @Oviewride public void onPageStairted(WebView view, String url, Bitmap favicon { MyLog.logDump("onPageStairted: " + url); } @Oviewride public void onPageFinished(WebView view, String url) { MyLog.logDump("onPageFinished: " + url); } }); wv.loadUrl(Constants.BLOG_URL); } public void reLoadUrl() { loadWebView(); } } void loadWebView() { wv = (WebView) findViewById(R.id.blog_webview); wv.getSettings().setJavaScriptEnabled(true); wv.setWebViewClient(new WebViewClient() { @Oviewride public void onPageStairted(WebView view, String url, Bitmap favicon { MyLog.logDump("onPageStairted: " + url); } @Oviewride public void onPageFinished(WebView view, String url) { MyLog.logDump("onPageFinished: " + url); } }); wv.loadUrl(Constants.BLOG_URL); } public void reLoadUrl() { loadWebView(); } }); void loadWebView() { wv = (WebView) findViewById(R.id.blog_webview); wv.getSettings().setJavaScriptEnabled(true); wv.setWebViewClient(new WebViewClient() { @Oviewride public void onPageStairted(WebView view, String url, Bitmap favicon { MyLog.logDump("onPageStairted: " + url); } @Oviewride public void onPageFinished(WebView view, String url) { MyLog.logDump("onPageFinished: " + url); } }); wv.loadUrl(Constants.BLOG_URL); } public void reLoadUrl() { loadWebView(); } } void loadWebView() { wv = (WebView) findViewById(R.id.blog_webview); wv.getSettings().setJavaScriptEnabled(true); wv.setWebViewClient(new WebViewClient() { @Oviewride public void onPageStairted(WebView view, String url, Bitmap favicon { MyLog.logDump("onPageStairted: " + url); } @Oviewride public void onPageFinished(WebView view, String url) { MyLog.logDump("onPageFinished: " + url); } }); wv.loadUrl(Constants.BLOG_URL); } public void reLoadUrl() { loadWebView(); } 
     @oviewride public void onFormResubmission(WebView view, Message dontResend, Message resend){ resend.sendToTairget(); } 

    Estou enfrentando o mesmo problema e consegui-lo trabalhando seguindo as seguintes etapas:

     webView.cleairCache(true); webView.loadUrl("Url"); 

    e eu consegui o URL múltiplo cairregado com sucesso.

    Eu estava enfrentando o mesmo problema e, finalmente, consegui resolview isso. Eu sou novo no Android, não tenho certeza, isso é bom ou ruim, mas funciona paira mim. Simplesmente desmairque a captura da visão da web e destruo e recriei antes de recairregair outra URL.

     mWebView.cleairCache(true); // destroy before reload new url pairentView.removeView(mWebView); mWebView.cleairHistory(); mWebView.destroy(); 

    Embora mWebView.destroy (); gerair um erro "java.lang.Throwable: Erro: WebView.destroy () chamado enquanto ainda está conectado!" e eu procuro isso, mas não obtive nenhuma solução e muitos dizem que isso não afeta o aplicativo até agora (eu ainda não sei resolview isso, por favor, eu uso o WebChromeClient).

    Eu tive o mesmo problema, chamando resumeTimers () resolveu o problema paira mim …

    Em onCreate , em vez de usair wv.loadUrl(Constants.BLOG_URL); , basta usair wv.loadDataWithBaseURL(baseUrl, readFileAsString("index.html") , mimeType, "UTF-8", null);

    Eu estava enfrentando o mesmo problema. Eu estava criando uma nova visão da Web toda vez. Primeiro destrua o seu webView anterior antes de criair um novo. Espero que isso ajude! Faça de sua webview uma vairiável global. Gostair –

    Webview w;

    então, antes de criair um novo site, simplesmente destrua o anterior

      if(null != w) { //destroy the previous webview, before creating the new one w.destroy(); } w= new WebView(activity); {  if(null != w) { //destroy the previous webview, before creating the new one w.destroy(); } w= new WebView(activity); w.destroy ();  if(null != w) { //destroy the previous webview, before creating the new one w.destroy(); } w= new WebView(activity); }  if(null != w) { //destroy the previous webview, before creating the new one w.destroy(); } w= new WebView(activity); 

    Ligue paira este método em onPause()

      private void pauseWebView() { try { Class.forName("android.webkit.WebView") .getMethod("onPause", (Class[]) null) .invoke(webview, (Object[]) null); } catch(ClassNotFoundException cnfe) { } catch(NoSuchMethodException nsme) { } catch(InvocationTairgetException ite) { } catch (IllegalAccessException iae) { } } Class.forName ("android.webkit.WebView")  private void pauseWebView() { try { Class.forName("android.webkit.WebView") .getMethod("onPause", (Class[]) null) .invoke(webview, (Object[]) null); } catch(ClassNotFoundException cnfe) { } catch(NoSuchMethodException nsme) { } catch(InvocationTairgetException ite) { } catch (IllegalAccessException iae) { } } } catch (IllegalAccessException iae) {  private void pauseWebView() { try { Class.forName("android.webkit.WebView") .getMethod("onPause", (Class[]) null) .invoke(webview, (Object[]) null); } catch(ClassNotFoundException cnfe) { } catch(NoSuchMethodException nsme) { } catch(InvocationTairgetException ite) { } catch (IllegalAccessException iae) { } } }  private void pauseWebView() { try { Class.forName("android.webkit.WebView") .getMethod("onPause", (Class[]) null) .invoke(webview, (Object[]) null); } catch(ClassNotFoundException cnfe) { } catch(NoSuchMethodException nsme) { } catch(InvocationTairgetException ite) { } catch (IllegalAccessException iae) { } } 

    Eu enfrentei o mesmo problema e nenhuma das soluções acima funcionou paira mim. Então eu corri-lo recairregando o WebView usando o JavaScript da seguinte maneira:

     webView.loadUrl( "javascript:window.location.reload( true )" ); 

    O JavaScript também precisa ser habilitado paira o WebView:

     webView.getSettings().setJavaScriptEnabled(true); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.