Autore Topic: webview OnReceivedError stampa messaggio di errore + progressbar  (Letto 959 volte)

Offline Hutzee

  • Nuovo arrivato
  • *
  • Post: 17
  • cuz we luv teh lulz <<-<
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    samsung galaxy s2
  • Sistema operativo:
    backtrack 5r3 (ubuntu 10.04)
webview OnReceivedError stampa messaggio di errore + progressbar
« il: 13 Febbraio 2013, 17:34:53 CET »
0
Risalve a tutti,
dopo aver quasi risolto il mio primo problema torno all'attacco con un altro problema!
Ho provato ad implementare una progressbar finchè la mia pagina web non è caricata e soprattutto se non c'è internet deve darmi un messaggio di errore e poi eventualmente chiudere l'applicazione.
Ora il mio codice è il seguente:
MainActivity.java
Codice (Java): [Seleziona]
package com.worfut.project;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.view.KeyEvent;
import android.view.inputmethod.EditorInfo;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MenuInflater;
import android.widget.ShareActionProvider;

public class MainActivity extends Activity {

       
        WebView WorfutWeb;
        ProgressBar progressBar;
       
            @Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu, menu);
    return true;
}
       

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);
     
        WorfutWeb = (WebView) findViewById(R.id.mainWebView);
       
        WorfutWeb.getSettings().setSupportZoom(false);
        WorfutWeb.getSettings().setBuiltInZoomControls(false);
        WorfutWeb.setBackgroundColor(Color.BLACK);
       
        WorfutWeb.setWebViewClient(new myWebClient());
        WorfutWeb.getSettings().setJavaScriptEnabled(true);
        Animation fadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.fadein);
                //Now Set your animation
        WorfutWeb.loadUrl("http://miosito.it");
                WorfutWeb.startAnimation(fadeInAnimation);
               
    }
   
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.menu_about:
        WorfutWeb.loadUrl("http://asdvdva/info.php");
// inside the menu button you don't need to call Super.loadUrl, LoadUrl its enough
            return true;
        case R.id.menu_help:
        WorfutWeb.loadUrl("http://blalbla/help.php");
// inside the menu button you don't need to call Super.loadUrl, LoadUrl its enough
            return true;
        case R.id.menu_search:
        WorfutWeb.loadUrl("http://blalbasdas/cerca.php");
                return true;
            case R.id.menu_exit:
           finish();
        default:
            return super.onOptionsItemSelected(item);
    }
}
   
    public void onResume() {  
       super.onResume();  
       if (WorfutWeb != null) {  
        WorfutWeb.resumeTimers();  
       }  
     }  
 
    public void onPause() {  
       super.onPause();  
       if (WorfutWeb != null) {  
        WorfutWeb.pauseTimers();  
       }  
     }  
   
   
    public class myWebClient extends WebViewClient
    {
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
                // TODO Auto-generated method stub
                super.onPageStarted(view, url, favicon);
        }
       
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
                // TODO Auto-generated method stub
                view.loadUrl(url);
                return true;
               
        }
        @Override
        public void onPageFinished(WebView view, String url) {
                // TODO Auto-generated method stub
                super.onPageFinished(view, url);
        }
    }
   
     // To handle "Back" kewy press event for WebView to go back to previous screen.
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event)
        {
                if ((keyCode == KeyEvent.KEYCODE_BACK) && WorfutWeb.canGoBack()) {
                        WorfutWeb.goBack();
                        return true;
                }
                return super.onKeyDown(keyCode, event);
        }
}

Ora se io volessi implementare una semplice finestrella con scritto Loading come questa:

Come devo fare?
Innanzitutto io non uso eclipse perchè nel mio backtrack va di merda, quindi uso gedit (notepad per windows..) e il mio problema non è solo come fare ma anche cosa IMPORTARE (import android.blalla.blalbla) perchè non ne ho idea!
Le guide che seguo scrivono il codice e se volete vi posto anche quello perfetto che ho trovato (sotto), ma non so come implementarlo perchè se lo implemento alla cazzo mi da mille errori!
il codice che ho trovato è questo:
Codice (Java): [Seleziona]
  webView.setWebChromeClient(new WebChromeClient()
    {
        public void onProgressChanged(WebView view, int progress)
        {
            activity.setTitle("Loading...");
                activity.setProgress(progress * 100);

                if(progress == 100)
                    activity.setTitle(R.string.app_name);
            }
        });
il problema è cosa devo aggiungere al mio file? dove metto quel codice?
Stessa cosa per il messaggio d'errore se non c'è internet:
Codice (Java): [Seleziona]
webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onReceivedError(WebView view,
                                int errCode, String description, String failedUrl) {
       String html1 = "<html><body><br><br><div><h3>Si è verificato un errore!</h3><hr>";
       String html2 = "<p>Controlla la tua connessione Internet!!</p></div></body></html>";
       String mime = "text/html";
       String encoding = "utf-8";
       view.loadData(html1+html2, mime, encoding);
    }
});
eeeepoiii, nei file xml devo aggiugnere qualcosa? la pagina di developers android è utile quanto una puzzola...
Grazie e scusate la nabbaggine con java, ma preferisco il sano php o al massimo il c.. anche se ho intenzione di imparare!

Offline Hutzee

  • Nuovo arrivato
  • *
  • Post: 17
  • cuz we luv teh lulz <<-<
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    samsung galaxy s2
  • Sistema operativo:
    backtrack 5r3 (ubuntu 10.04)
Re:webview OnReceivedError stampa messaggio di errore + progressbar
« Risposta #1 il: 19 Febbraio 2013, 12:18:35 CET »
0
up...

Offline Hutzee

  • Nuovo arrivato
  • *
  • Post: 17
  • cuz we luv teh lulz <<-<
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    samsung galaxy s2
  • Sistema operativo:
    backtrack 5r3 (ubuntu 10.04)
Re:webview OnReceivedError stampa messaggio di errore + progressbar
« Risposta #2 il: 22 Febbraio 2013, 10:48:30 CET »
0
uppyy