进度条未正确更新

时间:2011-12-22 23:33:19

标签: android android-widget

我正在使用进度条在我的应用中显示信息,这些信息最初是使用以下代码绘制的:

ProgressBar exampleProgressBar = (ProgressBar) findViewById(R.id.progressBarExampleID);
    exampleProgressBar.setMax(exampleMaxValue);
    exampleProgressBar.setProgress(exampleProgressValue);

然后,我希望用户能够输入信息,单击按钮进行保存,然后应用程序使用该信息编辑其上方的文本并将进度条设置为新位置。

当用户单击该按钮时,将运行与之前相同的方法,但使用新变量。奇怪的是,有时它会更新进度条,但大多数时候它只是保持在同一位置。每次没有问题时,文字都会改变。

有没有人对可能导致这种情况的原因有任何想法?

2 个答案:

答案 0 :(得分:3)

更改进度条时存在轻微错误。在最初设置它们之后,如果您想要更改值,则需要将它们设置为零:

ProgressBar dataProgressBar = (ProgressBar) findViewById(R.id.progressBarData);

    //set to 0 first to stop the bug from happening

    dataProgressBar.setMax(0);
    dataProgressBar.setProgress(0);

    //set your new values

    dataProgressBar.setMax((int) dataAllowanceValue);
    dataProgressBar.setProgress((int) dataMBytes);

答案 1 :(得分:0)

      ProgressBar exampleProgressBar =null;
     int exampleMaxValue=100;
     int i = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button b = (Button) findViewById(R.id.button1);
    b.setOnClickListener(this);
    exampleProgressBar = (ProgressBar) findViewById(R.id.progressBar1);
    exampleProgressBar.setMax(exampleMaxValue);
    exampleProgressBar.setProgress(0);

}
    @Override
    public void onClick(View v) {
        i++;
        exampleProgressBar.setProgress(i);
    }

ProgressBar对象声明为字段,仅应用findViewById()一次。确保你没有在后台线程中做某事并尝试从该线程更新进度条(如果是这样,请检查Android文档中的无痛线程)或者你正在做一些badass操作并同时设置进度,所以UI线程无法回复。希望它有效。