progressDialog 为什么设置了setProgress()方法无反应?

============问题描述============

package com.example.dialoglogdemo;

import android.app.AlertDialog;

import android.app.ProgressDialog;

import android.content.DialogInterface;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.support.v7.app.ActionBarActivity;

import android.util.Log;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

public class MainActivity extends ActionBarActivity implements OnClickListener {

	private AlertDialog.Builder builder;

	ProgressDialog pd;

	private Button btn_start;

	private Button btn_stop;

	private Handler mHandler = new Handler() {

		@Override

		public void handleMessage(Message msg) {

			// TODO Auto-generated method stub

			switch (msg.what) {

			case 1:

				if (pd != null) {

					int value = msg.arg1;

					Log.i("updateValue", "取出的值:"+msg.arg1+"");

					pd.setProgress(msg.arg1);//无反应,不更新进度

				}

				break;

			case 2:

				if (builder != null) {

				}

				break;

			case 3:

				if (pd != null) {

					pd.dismiss();

				}

			default:

				break;

			}

		}

	};

	@Override

	protected void onCreate(Bundle savedInstanceState) {

		super.onCreate(savedInstanceState);

		setContentView(R.layout.activity_main);

		btn_start = (Button) findViewById(R.id.button1);

		btn_stop = (Button) findViewById(R.id.button2);

		btn_start.setOnClickListener(this);

		btn_stop.setOnClickListener(this);

	}

	@Override

	public void onClick(View v) {

		// TODO Auto-generated method stub

		switch (v.getId()) {

		case R.id.button1:

			// 开始显示

			pd = new ProgressDialog(this);

			pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

			pd.setTitle("下载");

			pd.setIcon(R.drawable.ic_launcher);

			pd.setMessage("正在下载");

			pd.setIndeterminate(true);

			pd.setCancelable(true);

			pd.setButton(DialogInterface.BUTTON_POSITIVE, "确定",

					new DialogInterface.OnClickListener() {

						@Override

						public void onClick(DialogInterface dialog, int which) {

							// TODO Auto-generated method stub

							// pd.dismiss();

						}

					});

			pd.setButton(DialogInterface.BUTTON_NEGATIVE, "取消",

					new DialogInterface.OnClickListener() {

						@Override

						public void onClick(DialogInterface dialog, int which) {

							// TODO Auto-generated method stub

							// pd.dismiss();

						}

					});

			pd.show();

			// pd = ProgressDialog.show(MainActivity.this, "Loading...",

			// "Please wait...", true, false);

			new Thread(new Runnable() {

				@Override

				public void run() {

					Message msg = new Message();

					// TODO Auto-generated method stub

					try {

						for (int i = 1; i <= 100; i++) {

							Thread.sleep(100);

							msg=Message.obtain();

							msg.what=1;

							msg.arg1 = i;

							Log.i("updateValue", "放入的值:"+msg.arg1+"");

							mHandler.sendMessage(msg);

						}

						mHandler.sendEmptyMessage(3);

					} catch (InterruptedException e) {

						// TODO Auto-generated catch block

						e.printStackTrace();

					}

				}

			}).start();

			break;

		case R.id.button2:

			// 停止显示

			builder = new AlertDialog.Builder(MainActivity.this);

			builder.setTitle("下载")

					.setIcon(R.drawable.ic_launcher)

					.setCancelable(true)

					.setMessage("downloading...")

					.setPositiveButton("确定",

							new DialogInterface.OnClickListener() {

								@Override

								public void onClick(DialogInterface dialog,

										int which) {

									// TODO Auto-generated method stub

								}

							})

					.setNegativeButton("取消下载",

							new DialogInterface.OnClickListener() {

								@Override

								public void onClick(DialogInterface dialog,

										int which) {

									// TODO Auto-generated method stub

									dialog.dismiss();

								}

							});

			AlertDialog dialog = builder.create();

			dialog.show();

			new Thread(new Runnable() {

				@Override

				public void run() {

					// TODO Auto-generated method stub

					try {

						Thread.sleep(8000);

						mHandler.sendMessage(mHandler.obtainMessage(2));

					} catch (InterruptedException e) {

						// TODO Auto-generated catch block

						e.printStackTrace();

					}

				}

			}).start();

			break;

		default:

			break;

		}

	}

}

============解决方案1============

初始化时加上pd.setMax(最大的值);

============解决方案2============

没看到你 的 setMax

时间: 2024-08-04 13:09:39

progressDialog 为什么设置了setProgress()方法无反应?的相关文章

Android模拟器设置网络代理方法

在服务器上启动模拟器的时候加了--http-proxy,但是不起作用.所以搜了下面的方法 四种方法: 一:将网络连接代理设置写入配置数据库 (适合启动模拟器无界面) 1.通过命令行或者通过双击emulatoer可执行文件,打开模拟器 2.在命令行执行adb shell 打开android的控制台 (确保环境变量设置正确,即已经把Android_SDK/tools 添加到了PATH(Linux)/path(Windows)) 3.执行 ls -l /data/data/com.android.pr

delphi Form属性设置 设置可实现窗体无最大化,并且不能拖大拖小

以下设置可实现窗体无最大化,并且不能拖大拖小BorderIcon 设为---biMax[False] biHelp [False]BorderStyle 设为---bsSingle 参考-------------- 可以通过设置窗体的属性以及编程的方法,限制和控制窗体的变化.如让窗体不能最小化.最大化.-----1.通过属性设置方法使用Form的BorderIcon属性,我们可设置窗体是否具有系统菜单(biSystemMenu).最小化按钮(biMinimize).最大化按钮(biMaximiz

JavaScript设置获取和设置属性的方法

这篇文章主要介绍了JavaScript设置获取和设置属性的方法,学会使用getAttribute.setAttribute的用法,需要的朋友可以参考下 getAttribute 该方法用来获取元素的属性,调用方式如下所示: 复制代码代码如下: object.getAttribute(attribute) 以此前介绍的一些方法不同,getAttribute方法不属于document对象,所以不能通过document对象调用.它只能通过元素节点对象来调用. 该方法只接受一个参数,你指定要查询的属性的

mysql密码设置及重置方法

mysql密码设置及重置方法 作者 :小刘 今天这篇文章,我们来看下mysql数据库的密码设置,当我们不小心忘记了root密码,是一件很糟糕的事情,希望此文章可以帮助大家,我们先从设置密码开始吧!我们刚安装好的mysql数据库,默认root的密码为空,这时我们可以用一下命令设置密码mysqladmin -u root password "密码"如图(为root设置密码为123456)  如果你知道原来的旧密码,我们就可以用下面的命令直接更改就可以了mysqladmin -u root

Linux环境变量的设置和查看方法

1. 显示环境变量HOME $ echo $HOME /home/redbooks 2. 设置一个新的环境变量hello $ export HELLO="Hello!" $ echo $HELLO Hello! 3. 使用env命令显示所有的环境变量 $ env HOSTNAME=redbooks.safe.org ... 4. 使用set命令显示所有本地定义的Shell变量 $ set BASH=/bin/bash BASH_VERSINFO=([0]="2"[1

登陆后设置cookie的方法

public void SetCookie(string userName, string role,string cookieValueName) {FormsAuthentication.FormsCookieName FormsAuthenticationTicket myTick = new FormsAuthenticationTicket(1, userName, System.DateTime.Now.AddMinutes(30),DateTime.Now, false, role

两种 设置 背景图片方法

两种设置背景图片方法 //    UIView *navigationbarTitleTupian =[[UIView alloc]initWithFrame:CGRectMake(0, 0, 40, 30)]; //    UIImageView *imageTitleTupian =[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"bg.png"]]; // //    [navigationbarTitleTupian

android 中遇到 imageView getWidth 始终为0 时 ,设置 setImageBitmap 的方法

先说说我的遇到的问题: 1. 我在activity里写一个 fragment 2.这个fragment里有个 imageView ,用于显示图片. 我使用 asyncTask获得图片,并准备在这个imageView 中显示该图片的缩略图,我准备使用  ThumbnailUtils.extractThumbnail 方法生成缩略图. 我们先看看ThumbnailUtils.extractThumbnail(source, width, height);  这个方法的参数   source 源文件(

关于anroid设置webview背景方法探讨(转)

最近的项目中一直关于webView设置背景色问题在研究,最终找到了解决的方法. 基于我项目的需求,从服务端传过来的是带有标签的文本,如果使用textView会让整个布局显得很乱,里面的<img />的加载也会是个麻烦,但是基于webView背景色的设置就是研究的一个方向了! 使用android 中WebView的同事们都会发现一个问题,在使用webView控件时会发现其背景色是系统固定好的,如果不是用特殊方法更改其背景色会和自己整体的布局及色彩搭配 很不适应! 下面就来介绍在不同android