Android中的ProgressBar:无法使其工作

时间:2011-03-10 05:14:45

标签: android

在我的活动中,我按如下方式设置了进度条:

bar = (ProgressBar) findViewById( R.id.download_progress_bar );
bar.setProgress( 0 );
bar.setMax( 100 );

我有一个可以更新某些文本和进度条的runnable。文本更新工作正常,但进度条没有。这是runnable:

private class UpdateDownload implements Runnable
{
    private int downloadSize;

    public UpdateDownload( int downloadSize )
    {
        this.downloadSize = downloadSize;
    }

    public void run()
    {
        textDownloaded.setText( String.format( "%d / %d kB", downloadSize / 1024, currentFileSize / 1024 ) );
        textTotalDownloaded.setText( String.format( "%d / %d kB", ( downloadSize + bytesSoFar ) / 1024, totalSize / 1024 ) );
        bar.setSecondaryProgress( downloadSize / currentFileSize / 100 );
        bar.setProgress( ( downloadSize + bytesSoFar ) / totalSize / 100 );
    }
}

2 个答案:

答案 0 :(得分:0)

你的数学错了。放入setProgress的值必须介于0和最大值之间,在您的情况下为100。

所以:

bar.setProgress( 100 * ( downloadSize + bytesSoFar ) / totalSize );

答案 1 :(得分:0)

请完成本文:http://developer.android.com/resources/articles/painless-threading.html

我建议您使用 AsyncTask ,这里有链接以获取有关AsyncTask的更多信息:http://developer.android.com/reference/android/os/AsyncTask.html

现在,在我们可以在AsyncTask中使用的4种方法中,使用 onProgressUpdate() 更新进度条值。

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