二十九画生d 2016-11-13 05:08 采纳率: 0%
浏览 937

写了这么一段代码 可放在虚拟机运行的时候 点击按钮没反应 Android简单的两种进度对话框

public class MainActivity extends Activity implements OnClickListener{

private static final int MAX_PROGERSS=100;
private ProgressDialog progressDialog;
private Handler progressHandler;
private int progress;
//显示进度对话框,style 表示进度对话框的风格
private void showProgressDialog(int style){
    //创建ProgressDialog类的对象实例
    progressDialog=new ProgressDialog(this);
    progressDialog.setIcon(R.drawable.waitting);
    progressDialog.setTitle("正在处理数据…");
    progressDialog.setMessage("请稍后……");
    //设置进度对话框的风格
    progressDialog.setProgressStyle(style);
    //设置进度对话框的进度最大值
    progressDialog.setMax(MAX_PROGERSS);
    //设置进度对话框的‘暂停’按钮
    progressDialog.setButton("暂停", new DialogInterface.OnClickListener() {

        public void onClick(DialogInterface dialog, int whichButton) {
            // 删除消息队列中的消息来停止定时器
            progressHandler.removeMessages(1);

        }
    });
    //设置进度对话框的‘取消’按钮
    progressDialog.setButton2("取消", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
            // 删除消息队列中的消息来停止定时器
            progressHandler.removeMessages(1);
            //恢复进度初始值
            progress=0;
            progressDialog.setProgress(0);
        }
    });
    progressDialog.show();
    progressHandler=new Handler(){
        public void handleMessage(Message msg){
            super.handleMessage(msg);
            if(progress>=MAX_PROGERSS){
                //进度达到最大值,关闭对话框
                progress=0;
                progressDialog.dismiss();
            }
            else{
                progress++;
                //将进度递增1
                progressDialog.incrementProgressBy(1);
                //随机设置下一次递增进度(调用handleMessage方法)的时间间隔
                //第一个参数表示消息代码,第2个参数表示下一次调用handleMessage要等待的毫秒数
                progressHandler.sendEmptyMessageAtTime(1, 
                        50+new Random().nextInt(500));
            }
        }
    };
    //设置进度初始值
    progress=(progress>0)?progress:0;
    progressDialog.setProgress(progress);
    //立即设置进度对话框中的进度值,第一个参数表示消息代码
    progressHandler.sendEmptyMessage(1);
}

public void onClick(View view){
    switch(view.getId()){
        case R.id.button1:
            //显示水平进度对话框
            showProgressDialog(ProgressDialog.STYLE_HORIZONTAL);
            break;
        case R.id.button2:
            //显示圆形进度对话框
            showProgressDialog(ProgressDialog.STYLE_SPINNER);
            break;
    }
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button button1=(Button)findViewById(R.id.button1);
    Button button2=(Button)findViewById(R.id.button2);
    button1.setOnClickListener(this);
    button2.setOnClickListener(this);
}

}

  • 写回答

1条回答 默认 最新

  • 关注

    你试试将setButton和setButton2换成setPositiveButton和setNegativeButton看看可以否

    评论

报告相同问题?

悬赏问题

  • ¥15 求解达问题(有红包)
  • ¥15 请解包一个pak文件
  • ¥15 不同系统编译兼容问题
  • ¥100 三相直流充电模块对数字电源芯片在物理上它必须具备哪些功能和性能?
  • ¥30 数字电源对DSP芯片的具体要求
  • ¥20 antv g6 折线边如何变为钝角
  • ¥30 如何在Matlab或Python中 设置饼图的高度
  • ¥15 nginx中的CORS策略应该如何配置
  • ¥30 信号与系统实验:采样定理分析
  • ¥100 我想找人帮我写Python 的股票分析代码,有意请加mathtao