0

我有使用这样的多部分上传的代码,在这段代码中我添加了进度条

protected String doInBackground(String... args) {

            namapro = inputtitle.getText().toString();
            hargapro = inputprice.getText().toString();
            despro= inputdes.getText().toString();
            orderpro = inputorder.getText().toString();
            path = getIntent().getStringExtra("pathimage");         

            product.setTitle(namapro);
            product.setPrice(hargapro);
            product.setDesc(despro);
            product.setHow(orderpro);
            product.setImage(path);

                try{    

                    CustomMultipartEntity multipartContent = new CustomMultipartEntity(new ProgressListener()
                    {
                        @Override
                        public void transferred(long num)
                        {
                            int upload = ((int)((num/(float)totalSize)*100));
                            String progress = String.valueOf(upload);
                            publishProgress(progress);
                        }
                    });

                HttpEntity resEntity;
                HttpContext httpContext = new BasicHttpContext();
                HttpClient httpClient = new DefaultHttpClient();
                HttpPost post = new HttpPost(Constants.url_create_product);
                MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
                File file= new File(path);
                FileBody bin = new FileBody(file);

                reqEntity.addPart("phone", new StringBody(mPhoneNumber));
                reqEntity.addPart("prod_title", new StringBody(namapro));
                reqEntity.addPart("prod_price", new StringBody(hargapro));
                reqEntity.addPart("prod_desc", new StringBody(despro));
                reqEntity.addPart("prod_order", new StringBody(orderpro));
                reqEntity.addPart("prod_image", bin);
                totalSize = reqEntity.getContentLength();
                post.setEntity(reqEntity);
                HttpResponse response = httpClient.execute(post);
                resEntity = response.getEntity();
                String response_str = EntityUtils.toString(resEntity);
                Gson gson = new Gson();
                gson.toJson(response_str);

                if (resEntity != null) {
                     //Log.i("RESPONSE",response_str);
                     runOnUiThread(new Runnable(){
                         public void run() {
                             try {


                                if(daftar.equalsIgnoreCase("2")){// sudah connect fb twitter
                                    Intent i = new Intent(productdetail.this, home.class);
                                    Toast.makeText(getApplicationContext(), "Upload success", Toast.LENGTH_LONG).show();

                                    startActivity(i);
                                    finish();
                                }
                                else if(daftar.equalsIgnoreCase("1")){ // belum connect fb dan twitter
                                    dialog();
                                }
                             }catch (Exception e) {
                                    e.printStackTrace();

                            }

                        }
                         });
                     }

            }catch (Exception ex){
                 Log.e("Debug", "error: " + ex.getMessage(), ex);
                 dialog_gagal();  
            }

            return null;  
        }                       

            protected void onPostExecute(String file_url) {
                    // dismiss the dialog once done
                    pDialog.dismiss();
            }   

            protected void onProgressUpdate(Integer...progress){
                pDialog.setProgress((int) (progress[0]));
                //pDialog.setProgress(pDialog.getMax()-bytesAvailable);
            } 

但是当我运行这段代码时,进度条没有显示progressBar 没有在进程中更新。我只看到 %0 和 %100。这个怎么解决??你能帮忙吗?

谢谢

4

2 回答 2

0

您上传的数据有多大(以字节为单位)?它可能太小以至于进度监听器只被调用一次:当它完成时。

于 2012-10-31T06:48:06.490 回答
0

totalSize可能是 0,请尝试在您的 publishProgress 中将其注销

也尝试记录这个totalSize = reqEntity.getContentLength();

于 2012-11-20T10:55:54.387 回答