2017-01-13 9 views
2

Ich möchte wissen, was ist das Problem, wenn ich dieses Stück Code zu meinem Code hinzufügen.verstecken die Fortschrittsbalken nach dem Laden von Webview in Android

web.setWebViewClient(new WebViewClient() { 
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
     web.loadUrl("file:///android_asset/error.html"); 
    }}); 

Progressbar & textview nie unsichtbar geworden, nachdem webview Laden

beendet ist
public class YazdMap extends ActionBarActivity { 

WebView web; 
ProgressBar progressBar; 
TextView txt; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_yazd_map); 

    web = (WebView) findViewById(R.id.webview1); 
    progressBar = (ProgressBar) findViewById(R.id.progressBar); 
    txt = (TextView) findViewById(R.id.txt); 



    web.setWebViewClient(new myWebClient()); 
    web.getSettings().setJavaScriptEnabled(true); 
    web.loadUrl("http://google.com/"); 



    web.setWebViewClient(new WebViewClient() { 
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
     web.loadUrl("file:///android_asset/error.html"); 
} 
}); 


} 

public class myWebClient extends WebViewClient 
{ 

    @Override 
    public void onPageFinished(WebView view, String url) { 
     super.onPageFinished(view, url); 
     progressBar.setVisibility(view.GONE); 
     txt.setVisibility(view.GONE); 

    } 

    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     super.onPageStarted(view, url, favicon); 
    } 

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

    } 


} 

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_BACK) && web.canGoBack()) 
    {web.goBack(); 
    return true;} 

    return super.onKeyDown(keyCode, event); 
} 

}

+1

Diesen ganzen Code entfernen 'web.setWebViewClient (new WebViewClient() {' und 'onReceivedError' in 'myWebClient extends WebViewClient' verschieben –

+0

bitte weiterlesen – heaven

+0

Sie können Ihre Zweifel stellen, sonst muss ich eine Antwort zur Erklärung posten und zB –

Antwort

3

1.) web.setWebViewClient(new WebViewClient() { wird der vorherige Satz webview new myWebClient(), außer Kraft setzen, so entfernen Sie diese

web.setWebViewClient(new WebViewClient() { 
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
     web.loadUrl("file:///android_asset/error.html"); 
} 
}); 

2.) Bewegen Sie onReceivedError innerhalb myWebClient Klasse so wird Code

public class YazdMap extends ActionBarActivity { 

    WebView web; 
    ProgressBar progressBar; 
    TextView txt; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_yazd_map); 

     web = (WebView) findViewById(R.id.webview1); 
     progressBar = (ProgressBar) findViewById(R.id.progressBar); 
     txt = (TextView) findViewById(R.id.txt); 

     web.setWebViewClient(new MyWebClient()); 
     web.getSettings().setJavaScriptEnabled(true); 
     web.loadUrl("http://google.com/"); 

    } 

    public class MyWebClient extends WebViewClient 
    { 

      @Override 
      public void onPageFinished(WebView view, String url) { 
       super.onPageFinished(view, url); 
       progressBar.setVisibility(view.GONE); 
       txt.setVisibility(view.GONE); 

      } 

      @Override 
      public void onPageStarted(WebView view, String url, Bitmap favicon) { 
       super.onPageStarted(view, url, favicon); 
      } 

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

      } 

      @Override 
      public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
       view.loadUrl("file:///android_asset/error.html"); 
      } 

     } 

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if ((keyCode == KeyEvent.KEYCODE_BACK) && web.canGoBack()) 
     {web.goBack(); 
     return true;} 

     return super.onKeyDown(keyCode, event); 
    } 
} 

Hinweis sein: i den Namen von myWebClient zu MyWebClient geändert, weil Klasse Anfangsbuchstaben als Großbuchstaben gemäß Konvention haben muss.

Verwandte Themen