1. Gewinne jetzt ein UMiDIGI C Note - alle Informationen findest du hier!!
  1. Lilithian, 26.10.2010 #1
    Lilithian

    Lilithian Threadstarter Android-Hilfe.de Mitglied

    Hey,

    ich versuche eine WebView mit ProgressDialog zu laden, das ganze funktioniert auch so lange ich es nicht in einem Thread mache.

    Wenn ich es in einem Thread versuche, funktioniert es beim ersten mal laden, aber sobald man den Bildschirm kippt gibt es je nachdem ob man das dismissen des ProgressDialogs in den Thread nimmt oder woanders platziert entweder eine Fehlermeldung (view not attached to window manager) oder aber der ProgressDialog verschwindet gar nicht mehr.

    Das ist mein Code ohne Thread, der ja soweit funktioniert.
    Code:
    @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.webview);
            
            wb = (WebView)findViewById(R.id.webview);
            Intent i = this.getIntent();
            final String url = i.getStringExtra("url");        
               
            final ProgressDialog pd = ProgressDialog.show(ShowNews.this, "",
                    "News werden geladen...", true);  
            
            class MyWebViewClient extends WebViewClient {
                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    view.loadUrl(url);
                    return true;
                }  
                
                public void onPageFinished(WebView view, String url) {
                    if (pd.isShowing()) {
                        pd.dismiss();
                    }    
                }     
            }
            
            wb.setWebViewClient(new MyWebViewClient());
            
            wb.loadUrl(url); 
            
        }
    Meine Fragen wären nun, ob es möglich ist das Laden der Url und das Entfernen des ProgressDialogs in einen Thread zu packen und ob das überhaupt Sinn macht oder ob man es direkt so laden sollte. Habe es auch so versucht, den ProgressDialog über onProgressCreate, showProgress und dismissProgress zu zeigen, aber auch das hatte immer die beschriebenen Fehler. Alle Themen die ich bei Google dazu gefunden hab, haben das Problem irgendwie auch nicht gelöst...
    Danke schon mal für eure Hilfe. ^^
     
  2. swordi, 26.10.2010 #2
    swordi

    swordi Gewerbliches Mitglied

    erstelle die progressbar vielleicht in einem dialog.

    dann rufe den dialog ober die onDialog methode auf und das drehen sollte kein problem mehr sein
     
    Lilithian gefällt das.
  3. Lilithian, 26.10.2010 #3
    Lilithian

    Lilithian Threadstarter Android-Hilfe.de Mitglied

    Hey,

    danke erstmal für die schnelle Antwort. Ich weiß nicht, ob ich dich richtig verstanden hab, programmiere erst seit einer Woche mit Android. ;)
    Habe meinen Code nun wie folgt verändert...
    EDIT: Beim Thread musste es natürlich .start() und nicht .run() heißen. Nun zeigt er mir den ProgressDialog, aber wie bereits im ersten Beitrag beschrieben, klappt das nur beim Aufrufen über das Menü. Wenn ich den Bildschirm kippe, wird der ProgressDialog angezeigt, im Hintergrund die WebView geladen, doch auch wenn diese fertig geladen ist verschwindet der ProgressDialog nicht.

    Code:
    @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.webview);
            
            wb = (WebView)findViewById(R.id.webview);
            Intent i = this.getIntent();
            final String url = i.getStringExtra("url"); 
            
            showDialog(0);
            new Thread (new Runnable () {
                public void run() {
                    wb.loadUrl(url);
                    while (true) {
                        if (wb.getProgress() == 100) {
                            dismissDialog(0);
                            break;
                        }
                    }
                }
            }).start();    
            
            class MyWebViewClient extends WebViewClient {
                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    view.loadUrl(url);
                    return true;
                }  
            }
            
            wb.setWebViewClient(new MyWebViewClient());        
        }
        
        protected Dialog onCreateDialog(int id) {
            ProgressDialog dialog;
            switch(id) {
            case 0:
                dialog = new ProgressDialog(ShowNews.this);
                dialog.setTitle("");
                dialog.setMessage("News werden geladen...");
                dialog.setCancelable(true);
                dialog.setIndeterminate(true);        
                break;
            default:
                dialog = null;
            }
            return dialog;
        }
     
    Zuletzt bearbeitet: 26.10.2010
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[OFFEN] Doubletap auf den Screen Android App Entwicklung Heute um 18:15 Uhr
[OFFEN] WebView Probleme Android App Entwicklung 19.05.2017
[ERLEDIGT] GIF in WebView mehrmals abspielen Android App Entwicklung 02.04.2017
[ERLEDIGT] Navigation Drawer stürzt ab nach dem schchließen durch thread Android App Entwicklung 13.03.2017
AsyncTask ProgressDialog ändern Android App Entwicklung 21.02.2017
ProgressDialog und SnackBar in MainActivity Android App Entwicklung 16.02.2017
Buttonfarbe ständig wechseln Android App Entwicklung 06.01.2017
Problem mit Thread bei Galaxy S5 und S6(Edge) Android App Entwicklung 23.09.2016
Du betrachtest das Thema "WebView mit ProgressDialog in Thread?" im Forum "Android App Entwicklung",