Android 进度条保持在0%

Android 进度条保持在0%,android,Android,我曾尝试实现Async,以使用progresbar处理文件的后台解压,但是解压是在progressbar显示0%时进行的,解压后progresbar将在0%时解除。。onProgressUpdate方法未更新。我的代码如下: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setCo

我曾尝试实现Async,以使用progresbar处理文件的后台解压,但是解压是在progressbar显示0%时进行的,解压后progresbar将在0%时解除。。onProgressUpdate方法未更新。我的代码如下:

        @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ib = (ImageButton) findViewById(R.id.ImageButton01);
        ib.setOnClickListener(new OnClickListener() 
            {
                public void onClick(View v) 
                {
                     // TODO Auto-generated method stub
                    new DownloadFileFromURL().execute(file_url);
                }
            });
    }

    @Override
    protected Dialog onCreateDialog(int id) {

    System.out.println("DIALOG:");
    switch (id) {
    case progress_bar_type: //
        pDialog = new ProgressDialog(this);
        pDialog.setMessage("Extracting. Please wait...");
        pDialog.setIndeterminate(false);
        pDialog.setMax(100);
        pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        pDialog.setCancelable(true);
        pDialog.show();
        return pDialog;   
    default:
        return null;
    }
    }

            private void fileZ() 
                {
                    // TODO Auto-generated method stub

                    String zipFile = myDEST + myFolderImages + myFILEposterZIP;             
                    String unzipLocation = myDEST + myFolderImages; 

                    Decompress d = new Decompress(zipFile, unzipLocation); 
                    d.unzip();
                        System.out.println("UNZIPPING");
                }

            class DownloadFileFromURL extends AsyncTask<String, String, String> {

            @SuppressWarnings("deprecation")
                @Override
            protected void onPreExecute() {
                super.onPreExecute();
                showDialog(progress_bar_type);
            }

                    @Override
                    protected String doInBackground(String... params) {
                        // TODO Auto-generated method stub

                        fileZ();
                        return null;
                    }

                protected void onProgressUpdate(String... progress) {

                    // setting progress percentage
                    pDialog.setProgress(Integer.parseInt(progress[0]));
                }

                @SuppressWarnings("deprecation")
                    @Override
            protected void onPostExecute(String file_url) {
                // dismiss the dialog after the file was downloaded
                dismissDialog(progress_bar_type);

            }

            }
}
@覆盖
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ib=(ImageButton)findViewById(R.id.ImageButton01);
ib.setOnClickListener(新的OnClickListener()
{
公共void onClick(视图v)
{
//TODO自动生成的方法存根
新建DownloadFileFromURL().execute(文件url);
}
});
}
@凌驾
受保护的对话框onCreateDialog(int id){
System.out.println(“对话框:”);
开关(id){
案例进度条类型://
pDialog=新建进度对话框(此对话框);
pDialog.setMessage(“正在提取。请稍候…”);
pDialog.setUndeterminate(假);
pDialog.setMax(100);
pDialog.setProgressStyle(ProgressDialog.STYLE_水平);
pDialog.setCancelable(真);
pDialog.show();
返回pDialog;
违约:
返回null;
}
}
私有void fileZ()
{
//TODO自动生成的方法存根
字符串zipFile=myDEST+myfolderimage+myFILEposterZIP;
字符串unzipLocation=myDEST+myfolderimage;
解压d=新解压(zipFile,解压);
d、 解压缩();
System.out.println(“解压缩”);
}
类DownloadFileFromURL扩展异步任务{
@抑制警告(“弃用”)
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
显示对话框(进度条类型);
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
//TODO自动生成的方法存根
fileZ();
返回null;
}
受保护的void onProgressUpdate(字符串…进度){
//设置进度百分比
pDialog.setProgress(Integer.parseInt(progress[0]));
}
@抑制警告(“弃用”)
@凌驾
受保护的void onPostExecute(字符串文件\u url){
//下载文件后关闭对话框
解雇对话框(进度条类型);
}
}
}
编辑#1:

类提取文件扩展异步任务{
@抑制警告(“弃用”)
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
显示对话框(进度条类型);
}
@凌驾
受保护的字符串doInBackground(字符串…f_url){
//TODO自动生成的方法存根
线程线程=新线程()
{
公开募捐
{
int prog=0;
而(进展<100)
{
pDialog.setProgress(prog);
试一试{
《睡眠》(2000年);
}捕捉(中断异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
prog++;
}
}
};
thread.start();
System.out.println(“提取…”);
fileZ();
返回null;
}

解压文件时无法正确更新进度条

使用计数器,如:

count++;
并更新progressbar

publishProgress((int)((count));

你有没有为进度条更新编码?没有,我想它会根据doInBackground过程进行计算,我不确定如何更新onProgressUpdatePlease请参见编辑#1,提取后进度条以21%结束。它计算错误
publishProgress((int)((count));