2011-11-11 50 views
0

我在android中有一个不确定进度的问题。我有一个按钮,点击按钮时应该出现不确定的进度条,并且在任务结束时进度条应该消失。android不确定进度条问题

但我无法做到这一点。

package com.indeterminate; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.Window; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.LinearLayout; 
import android.widget.*; 

public class IndeterminateProgressBarActivity extends Activity { 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 

    super.onCreate(savedInstanceState); 
    final ProgressBar pb=new ProgressBar(this); 
    pb.setVisibility(View.GONE); 
    Button b =new Button(this); 
    b.setText("Click to start spinning"); 
    b.setOnClickListener(new OnClickListener(){ 

     @Override 
     public void onClick(View v) { 
      pb.setVisibility(View.VISIBLE); 
      // Want to write some code 
      pb.setVisibility(View.GONE); 

      // But the progress bar is not shown on the screen 

    LinearLayout l=new LinearLayout(this); 
    l.addView(pb); 
    l.addView(b); 

    this.setContentView(l); 
} 

}

+0

http://stackoverflow.com/questions/3548441/android-create-progressbar-programmatically –

+0

我的问题不在于设置颜色等属性。它消失 – nikhil

+0

pb.setVisibility(View.VISIBLE); try {0} Thread.sleep(3000); pb.setVisibility(View.GONE); } catch(InterruptedException e){} –

回答

1

使用异步任务为。在调用的onClick

new SomeTask(0).execute(); 

/** Inner class for implementing progress bar before fetching data **/ 
    private class SomeTask extends AsyncTask<Void, Void, Integer> 
    { 
     private ProgressDialog Dialog = new ProgressDialog(yourActivityClass.this); 
     @Override 
     protected void onPreExecute() 
     { 

      Dialog.setMessage("Doing something..."); 
      Dialog.show(); 
     } 

     @Override 
     protected Integer doInBackground(Void... params) 
     { 
      //Task for doing something 

      return 0; 
     } 

     @Override 
     protected void onPostExecute(Integer result) 
      { 

      if(result==0) 
      { 
//do some thing 
      } 

    // after completed finished the progressbar 
      Dialog.dismiss(); 
     } 

    } 
1

对于这个概念,你应该的AsyncTask类

上preExecute U可以设定进度可见和DoInBackGround你可以写我们的代码,并在PostExecute你可以设置进度历程的可见性。

static class PleaseWait extends AsyncTask<void, void, Void> { 

final ProgressBar pb = new ProgressBar(this); pb.setVisibility(View.GONE);

protected void onPreExecute() { 
       pb.setVisibility(View.VISIBLE); 

    } 

    protected Void doInBackground(Object... args) { 
     //Write some code here 
    } 

    protected void onPostExecute(Void result) { 
     pb.setVisibility(View.GONE); 

    } 
} 

你可以调用new PleaseWait()。execute;

+0

非常感谢。但是在初始化“最终进度条”时出现错误 – nikhil

+0

nikhil,您应该将进度条声明为外部类的成员变量,否则可以在声明中删除最终关键字。它会工作。 – Hardik4560