首页 > 代码库 > progressDialog 为什么设置了setProgress()方法无反应?
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
progressDialog 为什么设置了setProgress()方法无反应?
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。