【问题标题】:How do I show and then remove an android progress dialog如何显示然后删除一个 android 进度对话框
【发布时间】:2010-12-08 13:44:23
【问题描述】:

我可以使用以下代码显示进度条

pd = ProgressDialog.show(myActivity.this, "", "Loading. Please wait...", true);

直截了当,但是一旦我执行了代码,我希望它消失,但是当我在根本看不到对话框显示之后运行dismiss方法时。

这是包装在 oncreate 中的上下文中的代码

pd = ProgressDialog.show(myActivity.this, "", "Loading. Please wait...", true);
runCode();  
setListAdapter(new CustomAdapter(myActivity.this)); 
pd.dismiss();

我以为你可以在活动中的任何地方显示/关闭进度对话框,但我一定是错的。

【问题讨论】:

    标签: android progressdialog


    【解决方案1】:

    这是我开始工作的代码

    private class UpdateFeedTask extends AsyncTask<MyActivity, Void, Void> {
    
        private ProgressDialog mDialog;
    
        protected void onPreExecute() {
            Log.d(TAG, " pre execute async");
            mDialog = ProgressDialog.show(MyActivity.this,"Please wait...", "Retrieving data ...", true);
    
        }
    
        protected void onProgressUpdate(Void... progress) {
            Log.d(TAG, " progress async");     
        }
    
        @Override
        protected Void doInBackground(MyActivity... params) {
            // TODO Auto-generated method stub
            return null;
        }
    
        protected void onPostExecute(Void result) {
            Log.d(TAG, " post execute async");
            mDialog.dismiss();
        }
    
    }
    

    【讨论】:

      【解决方案2】:

      参考我的示例代码sinnpet,希望对你有帮助

      import android.app.Activity;
      import android.content.Intent;
      import android.os.Bundle;
      import android.os.Handler;
      import android.os.Message;
      import android.util.Log;
      import android.view.KeyEvent;
      import android.widget.ProgressBar;
      
      public class PlayActivity extends Activity {
          /** Called when the activity is first created. */
      
        private ProgressBar mProgress;
           private int mProgressStatus = 0;
           private int count=0;
           private Handler mHandler=new Handler();
          @Override
          public void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.main);
      
              mProgress = (ProgressBar) findViewById(R.id.ProgressBar01);
              new Thread(myThread).start();
      
          }
          private Runnable myThread = new Runnable(){
      
           @Override
           public void run() {
           // TODO Auto-generated method stub
           while (mProgressStatus<=100){
           try{
           myHandle.sendMessage(myHandle.obtainMessage());
           Thread.sleep(1000);
           }
           catch(Throwable t){
           }
           }
           }
      
           Handler myHandle = new Handler(){
      
           @Override
           public void handleMessage(Message msg) {
           // TODO Auto-generated method stub
            mProgressStatus=mProgressStatus+10;
            count=mProgressStatus;
            Log.d("mProgressStatus",Integer.toString(count));
            mProgress.setProgress(mProgressStatus);
            if(count > 80)
                  {
                   Log.d("mProgressStatus",Integer.toString(mProgressStatus));
                   counter.start();
                  }
           }
           };
           };
      
      
      
      }
      

      【讨论】:

      • 嗯,我想我需要一个 AsyncTask,也无法让它工作
      【解决方案3】:

      移除进度条

      ProgressBar progressbar = (ProgressBar)findViewById(R.id.progressbarID);
      
      progressBar.setVisibility(View.INVISIBLE) ;
      

      在 xml 中隐藏进度条并显示它

       ProgressBar progressbar = (ProgressBar)findViewById(R.id.progressbarID);
      
          progressBar.setVisibility(View.VISIBLE) ;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-13
        • 2012-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多