ПрогрессДиалог в андроид - PullRequest
       3

ПрогрессДиалог в андроид

0 голосов
/ 14 сентября 2011

Это мой код активности ... здесь я выбираю данные из базы данных через JSON и PHP ...

Как я могу отобразить progessDialog при загрузке данных?

Вот мой код активности:

package org.postandget;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.*;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

public class main extends Activity {
    static TextView tv;
    static String text;
    ProgressDialog progressDialog;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);       
        tv  = (TextView)findViewById(R.id.textview);
        text    = "";
        tv.setText("hi parthi");                
       new main.execute();
    }

    public static void postData(Object JSONfunctions) throws JSONException{
        // Create a new HttpClient and Post Header
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://eeeee.com/ee/login.php");      
        JSONObject json = new JSONObject();
        try {
            // JSON data:           
            json.put("name", "Fahmi Rahman");
            json.put("position", "sysdev");         
            JSONArray postjson=new JSONArray();
            postjson.put(json);
            // Post the data:
            httppost.setHeader("json",json.toString());
            httppost.getParams().setParameter("jsonpost",postjson);

            // Execute HTTP Post Request
            System.out.print(json);
            HttpResponse response = httpclient.execute(httppost);
            // for JSON:
            if(response != null)
            {
                InputStream is = response.getEntity().getContent();
                BufferedReader reader = new BufferedReader(new InputStreamReader(is));
                StringBuilder sb = new StringBuilder();
                String line = null;
                try {
                    while ((line = reader.readLine()) != null) {
                        sb.append(line + "\n");
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    try {
                        is.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                text = sb.toString();
            }

            tv.setText(text);

        }catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
        } catch (IOException e) {
            // TODO Auto-generated catch block
        }
    }

    private class xyz extends AsyncTask<Void, Void, Void> {
        private final ProgressDialog dialog = new ProgressDialog(main.this);

        protected void onPreExecute() {
            this.dialog.setMessage("Please Wait...");
            this.dialog.show();
            //code which load at prefix time
            try {
               main.postData(null);          
            } catch (JSONException e) {
                e.printStackTrace();        }
        }

        @Override
        protected Void doInBackground(Void... arg0) {

                // make code which you want in background

            return null;
        }

        protected void onPostExecute(final Void unused) {
            if (this.dialog.isShowing()) {
                this.dialog.dismiss();

            }

        }
    }
}

Ответы [ 2 ]

1 голос
/ 14 сентября 2011

вам нужно использовать asyncTask

AsyncTask обеспечивает правильное и простое использование потока пользовательского интерфейса.Этот класс позволяет выполнять фоновые операции и публиковать результаты в потоке пользовательского интерфейса без необходимости манипулировать потоками и / или обработчиками.

Асинхронная задача определяется вычислением, которое выполняется в фоновом потоке и результат которого публикуется впоток пользовательского интерфейса.Асинхронная задача определяется 3 универсальными типами, называемыми Params, Progress и Result, и 4 шагами, которые называются onPreExecute, doInBackground, onProgressUpdate и onPostExecute

      private class xyz extends AsyncTask<Void, Void, Void> {
    private final ProgressDialog dialog = new ProgressDialog(main.this);

    protected void onPreExecute() {
        this.dialog.setMessage("Please Wait...");
        this.dialog.show();
        //code which load at prefix time

    }

    @Override
    protected Void doInBackground(Void... arg0) {

            // make code which you want in background

        return null;
    }

    protected void onPostExecute(final Void unused) {
        if (this.dialog.isShowing()) {
            this.dialog.dismiss();

        }

    }
}

и используют это в событии нажатия кнопки илив основном файле ::

 new xyz().execute();

ОБНОВЛЕНИЕ:

package org.postandget;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.*;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

public class main extends Activity {
    TextView tv;
    String text;
  ProgressDialog  progressDialog;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);       
        tv  = (TextView)findViewById(R.id.textview);
        text    = "";
        tv.setText("hi parthi");                
       new main.execute();
    }
    public void postData(Object JSONfunctions) throws JSONException{
        // Create a new HttpClient and Post Header
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://eeeee.com/ee/login.php");      
        JSONObject json = new JSONObject();
        try {
            // JSON data:           
            json.put("name", "Fahmi Rahman");
            json.put("position", "sysdev");         
            JSONArray postjson=new JSONArray();
            postjson.put(json);
            // Post the data:
            httppost.setHeader("json",json.toString());
            httppost.getParams().setParameter("jsonpost",postjson);

            // Execute HTTP Post Request
            System.out.print(json);
            HttpResponse response = httpclient.execute(httppost);
            // for JSON:
            if(response != null)
            {
                InputStream is = response.getEntity().getContent();
                BufferedReader reader = new BufferedReader(new InputStreamReader(is));
                StringBuilder sb = new StringBuilder();
                String line = null;
                try {
                    while ((line = reader.readLine()) != null) {
                        sb.append(line + "\n");
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    try {
                        is.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                text = sb.toString();
            }

            tv.setText(text);

        }catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
        } catch (IOException e) {
            // TODO Auto-generated catch block
        }
    }
    private class xyz extends AsyncTask<Void, Void, Void> {
        private final ProgressDialog dialog = new ProgressDialog(main.this);

        protected void onPreExecute() {
            this.dialog.setMessage("Please Wait...");
            this.dialog.show();
            //code which load at prefix time
            try {
                postData(savedInstanceState);          
            } catch (JSONException e) {
                e.printStackTrace();        }
        }

        @Override
        protected Void doInBackground(Void... arg0) {

                // make code which you want in background

            return null;
        }

        protected void onPostExecute(final Void unused) {
            if (this.dialog.isShowing()) {
                this.dialog.dismiss();

            }

        }
    }
}
0 голосов
/ 14 сентября 2011

Сначала создайте объект Progress Dialog в своей деятельности следующим образом ---->

  1. ProgressDialog pd;
  2. static final int Dialog_id = 1;

затем в вашем блоке Try, где вы публикуете данные, отображается диалог прогресса, подобный этому ---->

  1. showDialog(Dialog_id);

и после вашего метода onCreate () создайте метод onCreateDialog (), подобный этому ----->

4

 protected Dialog onCreateDialog(int id){
       switch(id){
          case Dialog_id :
            ProgressDialog pd = new ProgressDialog(this);
            pd.setTitle("Loading Data");
            pd.setCancelable(true);
            return pd;
            break;
         return null;
}
...