当前位置: 代码迷 >> Android >> progressDialog 为啥设置了setProgress()方法无反应
  详细解决方案

progressDialog 为啥设置了setProgress()方法无反应

热度:98   发布时间:2016-04-28 04:05:59.0
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();