1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

progressDialog wird angezeigt -> Thread aber nicht ausgeführt?

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von baeckerman83, 05.06.2011.

  1. baeckerman83, 05.06.2011 #1
    baeckerman83

    baeckerman83 Threadstarter Neuer Benutzer

    Beiträge:
    18
    Erhaltene Danke:
    0
    Registriert seit:
    09.02.2011
    Hiho!
    Ich habe noch eine Frage, ich habe einen ProgressDialog in meine App eingebaut sobald man auf den aktualisieren Button klickt. Leider klappt das dann aber nicht so wie es soll.
    Er zeigt mir den Dialog an, aber im Hintergrund soll er während der Anzeige noch daten von einem Webserver laden, das macht er nicht. Es wird nur ein Sleep ausgeführt im Thread. Ist Thread das falsche? Brauche ich da AsyncTask? Hat jemand einen Link zu einer guten AsyncTask Anleitung mit Dialog? Oder habe ich einen anderen Fehler?

    Code:
    package de.ben.statistik;
    
    import org.apache.http.HttpResponse;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.json.JSONException;
    import org.json.JSONObject;
    
    import android.app.Activity;
    import android.app.ProgressDialog;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.TextView;
    
    public class Statistik extends Activity {
        private ProgressDialog dialog;
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            
            
        }
        
        public boolean onCreateOptionsMenu(Menu menu) {
            super.onCreateOptionsMenu(menu);
            getMenuInflater().inflate( // (1)
            R.layout.hauptmenue, menu);
            return true;
            }
    
    
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
            case R.id.opt_AnzeigeAktualisieren: {
                dialog = ProgressDialog.show(this, "", 
                        "Loading. Please wait...", true);
                
                
                new Thread() {
    
                    public void run() {
    
                    try{
    
                        try {
                            Thread.sleep(5000);
                        } catch (InterruptedException e1) {
                            // TODO Auto-generated catch block
                            e1.printStackTrace();
                        }
                        TextView prozent = (TextView) findViewById(R.id.prozent1);
                        final String txtUrl = "http://sportwetten-blogger.de";
                        JSONObject Jarr=getRequest(txtUrl);
                        try {
                            prozent.setText(Jarr.getString("prozent"));
                        } catch (JSONException e) {
    
                        }
    
                    } catch (Exception e) {
    
                    Log.e("tag", e.getMessage());
    
                    }
    
                    // dismiss the progress dialog
    
                    dialog.dismiss();
    
                    }
    
                    }.start();
                
            return true;
            }
            }
            return super.onOptionsItemSelected(item);
            }
    
    
        public JSONObject getRequest(String txtUrl){
            String url = txtUrl;
            JSONObject Jarr=null;
            HttpClient client = new DefaultHttpClient();
            HttpGet request = new HttpGet(url);
            try{
                HttpResponse response = client.execute(request);
                String text=HttpHelper.request(response);
                try {
                    Jarr= new JSONObject(text);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return Jarr;
            }catch(Exception ex){
                return Jarr;
            }
        }
    }
     
    Zuletzt bearbeitet: 05.06.2011
  2. swordi, 05.06.2011 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    also mit thread gehts sicher auch, aber mit asynctask ist es einfacher

    google liefert dir da mit sicherheit genügend beispiele.
     
  3. baeckerman83, 05.06.2011 #3
    baeckerman83

    baeckerman83 Threadstarter Neuer Benutzer

    Beiträge:
    18
    Erhaltene Danke:
    0
    Registriert seit:
    09.02.2011
    Danke habe es mit asynctask hinbekommen. :) Hier meine Lösung, auch wenn sie sicher nicht top ist, evt hilft sie ja jemand.
    Code:
    package de.ben.statistik;
    
    import org.apache.http.HttpResponse;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.json.JSONException;
    import org.json.JSONObject;
    
    import android.app.Activity;
    import android.app.ProgressDialog;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.TextView;
    
    public class Statistik extends Activity {
        private ProgressDialog dialog;
        public JSONObject Jarr;
        public ProgressDialog progDialog;
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);        
            new TheTask().execute();
    
        }
        
        public boolean onCreateOptionsMenu(Menu menu) {
            super.onCreateOptionsMenu(menu);
            getMenuInflater().inflate( // (1)
            R.layout.hauptmenue, menu);
            return true;
            }
    
    
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
            case R.id.opt_AnzeigeAktualisieren: {
                new TheTask().execute();    
            return true;
            }
            }
            return super.onOptionsItemSelected(item);
            }
    
    
        public JSONObject getRequest(String txtUrl){
            String url = txtUrl;
            JSONObject Jarr=null;
            HttpClient client = new DefaultHttpClient();
            HttpGet request = new HttpGet(url);
            try{
                HttpResponse response = client.execute(request);
                String text=HttpHelper.request(response);
                try {
                    Jarr= new JSONObject(text);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return Jarr;
            }catch(Exception ex){
                return Jarr;
            }
        }
        
        private class TheTask extends AsyncTask<Void, Void, Void>{
    
            @Override
            protected void onPreExecute() {
                progDialog = ProgressDialog.show(Statistik.this,"","Loading, please wait....", true);
            }
    
            @Override
            protected Void doInBackground(Void... Params) {
                
                    //Thread.sleep(5000);
                    final String txtUrl = "http://sportwetten-blogger.de/";
                    Jarr=getRequest(txtUrl);
                
                return null;
            }
    
            @Override
            protected void onPostExecute(Void result) {
    
                if(progDialog.isShowing())
                {
                progDialog.dismiss();
                }
                TextView prozent = (TextView) findViewById(R.id.prozent1);
                try {
                    prozent.setText(Jarr.getString("prozent"));
                } catch (JSONException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }  
        
        
    }
    
     

Diese Seite empfehlen