CJ_Finger 2016-11-04 09:36 采纳率: 100%
浏览 3708
已采纳

关于Android弹出多个对话框的问题

各位大侠好,项目要实现的效果是,先弹出设置密码的对话框,点击确定后,第一个对话框消失,弹出再次确认密码的对话框,可是总是报错

 java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

下面是两个对话框的代码:

 //设置支付密码
    private void setPayPwd1Dlg(){
        AlertDialog.Builder builder = new AlertDialog.Builder(TransferActivity.this);
        builder.setTitle("请设置支付密码");
        builder.setView(et_payp);
        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                dialog.dismiss();
                setPayPwd2Dlg(et_payp.getText().toString());
            }
        });
        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                dialog.dismiss();
            }
        });
        builder.show();
    }
    //再次确认支付密码
    private void setPayPwd2Dlg(String paypwd){
        final String paypwd1 = paypwd;
        AlertDialog.Builder builder = new AlertDialog.Builder(TransferActivity.this);
        builder.setTitle("请再次输入支付密码");
        builder.setView(et_payp);
        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                dialog.dismiss();
                if(et_payp.getText().toString().equals(paypwd1)){
                    new Thread(setPayPwd).start();
                }else {
                    Toast.makeText(getApplicationContext(), "两次密码不一致", Toast.LENGTH_SHORT).show();
                }
            }
        });
        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                dialog.dismiss();
            }
        });
        builder.show();
    }

请问这个问题要怎么解决?

  • 写回答

2条回答 默认 最新

  • RoidCoder 2016-11-04 15:09
    关注

    Can't create handler inside thread that has not called Looper.prepare()

    在子线程中创建Handler之前,必须调用Looper.prepare()来创建Loopger对象

    主线程中默认是有一个Looper对象的,所以可以直接创建Handler

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 数据库数据成问号了,前台查询正常,数据库查询是?号
  • ¥15 算法使用了tf-idf,用手肘图确定k值确定不了,第四轮廓系数又太小才有0.006088746097507285,如何解决?(相关搜索:数据处理)
  • ¥15 彩灯控制电路,会的加我QQ1482956179
  • ¥200 相机拍直接转存到电脑上 立拍立穿无线局域网传
  • ¥15 (关键词-电路设计)
  • ¥15 如何解决MIPS计算是否溢出
  • ¥15 vue中我代理了iframe,iframe却走的是路由,没有显示该显示的网站,这个该如何处理
  • ¥15 操作系统相关算法中while();的含义
  • ¥15 CNVcaller安装后无法找到文件
  • ¥15 visual studio2022中文乱码无法解决