2012-10-08 26 views
5

Please help me this this question. Sto lavorando con webview. E ho dovuto affrontare due problemi:WebView: Il metodo WebViewClient.onPageStarted non viene chiamato

  1. Quando la webview carica nuova pagina. Il metodo onPageStarted non viene chiamato ma viene chiamato il metodo onPageFinished.
  2. Il metodo: mWebView.canGoBack() restituisce sempre false.

Se sapete perché o avete qualche suggerimento, per favore aiutatemi. Nota: Sto lavorando con: Jquery Mobile sul lato server (lato Web).

Questi sono il mio client Webview e il codice sorgente di init Webview.

private class MyWebViewClient extends WebViewClient{ 

    private static final String TAG = "MyWebViewClient"; 


    @Override 
    public void onPageFinished(WebView view, String url) { 
     super.onPageFinished(view, url); 
     Log.v(TAG, "onPageFinished url: " + url); 

    } 

    @Override 
    public void onLoadResource(WebView view, String url){ 
     Log.v(TAG, "onLoadResource url: " + url); 
    } 

    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     super.onPageStarted(view, url, favicon); 
     Log.v(TAG, "onPageStarted url: " + url); 

    } 

    @Override 
    public void onReceivedError(WebView view, int errorCode, 
      String description, String failingUrl) { 
     super.onReceivedError(view, errorCode, description, failingUrl); 
     Log.v(TAG, "onReceivedError url: " + failingUrl); 

    } 


    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     Log.v(TAG, "shouldOverrideUrlLoading : " + url); 

     return false; 
    } 

} 

Questo è il mio WebView init:

  mWebView = new WebView(getActivity()); 
     mWebView.setWebViewClient(new MyWebViewClient()); 
     WebSettings webSettings = mWebView.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 

     String link = getArguments().getString(PARAMETER_LINK); 
     boolean deleteWVData = getArguments().getBoolean(PARAMETER_DELETE_DATA); 
     if(deleteWVData) 
      mWebView.clearCache(true); 

risposta

1

credo onPageStarted è chiamato solo quando una nuova pagina diviene caricata. E.g.g sei su index.html e vai a contact.html

La maggior parte dei framework mobili (come jquery mobile, ionic, angualar) rimarrà nella pagina index.html e modificherà solo il contenuto. Quindi, onPageStarted non viene chiamato, ma onPageFinished è

0

index.html # xxxxxxx index.html # aaaaaa

sono considerati allo stesso dal WebView, in questo caso, onPageStarted wont'be chiamato

+0

Aggiungi qualche spiegazione con la risposta di come questa risposta di aiuto nel fissare OP questione attuale –

+0

webview chiama solo onPageStarted quando si carica una nuova pagina –

-1

Aggiorna la webview e controlla.

Ho affrontato questo problema quando la versione corrente di WebView è 60.0.3112.107, mentre la versione del telefono cellulare era 57.x.xxxx.xxx

Problemi correlati