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

B

baeckerman83

Neues Mitglied
0
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:
also mit thread gehts sicher auch, aber mit asynctask ist es einfacher

google liefert dir da mit sicherheit genügend beispiele.
 
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();
            }
        }
    }  
    
    
}
 

Ähnliche Themen

SaniMatthias
Antworten
19
Aufrufe
871
swa00
swa00
L
Antworten
17
Aufrufe
1.199
jogimuc
J
Zurück
Oben Unten