显示进度条上的导入数据

时间:2011-11-23 07:46:26

标签: android import progress

我正在研究android中的地址簿应用程序。在我的应用程序中,我在我的应用程序中从电话簿导入联系人。导入我正在显示进度条。我想在导入时显示正在导入栏上导入的联系人。这个? 以下是我的代码: -

public  class Task extends AsyncTask<String, Integer, Void> {
        private  ProgressDialog dialog;
        protected Context applicationContext;

        @Override
        protected void onPreExecute()
        {

            System.out.println("IN PreExecute");
            this.dialog = ProgressDialog.show(applicationContext, "Importing Contacts", "Please Wait...", true);
             dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

        }
        @Override
        protected Void doInBackground(String... params) {
            // TODO Auto-generated method stub
            System.out.println("IN BACKGROUND");
            addcontacts();//return flag1;
            //dialog.setMessage(name);
            return null ;


        }
        protected void onProgressUpdate(String... progress) 
        {
            System.out.println("IN update");

        }                      
        @Override                      
        protected void onPostExecute(Void unused) {


            this.dialog.cancel();
            System.out.println("IN PostExecute");
            final AlertDialog.Builder alertbox1=new AlertDialog.Builder(Import.this);
            Cursor c=data.getData();
            int num=c.getCount();
            alertbox1.setMessage(+num+" contacts imported");
             c.close();
            // set a positive/yes button and create a listener
            alertbox1.setPositiveButton("OK", new DialogInterface.OnClickListener() {

                // do something when the button is clicked
                public void onClick(DialogInterface arg0, int arg1)
                {

                    call();
                }
            });
            alertbox1.show();



        }

2 个答案:

答案 0 :(得分:1)

每当我们致电onProgressUpdate并且来自publishProgress的论据转到publishProgress

时,

onProgressUpdate就会被调用

所以在doInBackground()你可以做到

protected Void doInBackground(String... params) {

   for(int i=1; i<=totalContacts; ++i) {
        importNextContact();
        publishProgress(i/(float)totalContacts)*100);
   }

}

protected void onProgressUpdate(Integer... progress) {
     setProgressPercent(progress[0]);
 }

答案 1 :(得分:0)

使用dialog.setMessage(“msg”)是正确的,但请记住,你无法更改ui中的ui doInBackground(...)方法,所以要么使用处理程序发布一个msg,要么使用runOnUiThread。