如何在从远程数据库加载数据时显示android中的进度条?

时间:2011-10-19 10:51:25

标签: android progress-bar

如何显示进度条我正在从A级到B级调用意图。 其中B类从使用解析装置中加载数据 发生这种情况,我想在这个时候出现空白屏幕 进度栏我该怎么做。

现在我正在编写如下代码..

class A extends Activity{
    oncreate(){ 
        ...
    Button b1 = (Button) findViewById(R.id.button1);

    b1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            new performBackgroundtask().execute(); 
        } 
    } 

    class performBackgroundtask extends AsyncTask<Void, Void, Void> {
        //
        ProgressDialog progressDialog = new ProgressDialog(Main.this);

        @Override
        protected void onPreExecute() {
            progressDialog = ProgressDialog.show(Main.this,"", "Please wait...");                  
            super.onPreExecute();

            /*
             * progressDialog.setMessage("Please wait while loading ...");
             * progressDialog.show(); progressDialog.setCancelable(true);
             */         
        }

        @Override
        protected Void doInBackground(Void... params) {
            Intent in = new Intent(A.this, B.class);                    
            startActivity(in);
            // TODO Auto-generated method stub          
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            progressDialog.dismiss();       
        }
    } 
}

class B { ...
/*
 * In which this class has another view which has to get the data from
 * URL using SAXPArsing.
 *
 * ... for this where i need to write progress bar code.
 */
}

2 个答案:

答案 0 :(得分:1)

我使用处理程序做了类似的事情。当处理程序从线程收到响应时,您可以关闭progressdialog。

一些代码可以帮助您理解:

final Handler handler = new Handler()
    {
        @Override
        public void handleMessage( Message message )
        {
            progressBar.setVisibility( View.GONE );
            // My irrelevant code here
        }
    };

    new Thread( new Runnable()
    {
        public void run()
        {
            // Do your stuff here
            Message message = handler.obtainMessage( 1, text );
            handler.sendMessage( message );
        }
      }).start();

答案 1 :(得分:0)

不是调用另一个Activity类来进行下载,而是将此功能移动到每个Activity可以使用的另一个类中。