当前位置: 代码迷 >> Android >> android 中 AlertDialog.Builder监听事件解决方案
  详细解决方案

android 中 AlertDialog.Builder监听事件解决方案

热度:189   发布时间:2016-04-28 03:22:16.0
android 中 AlertDialog.Builder监听事件
现在截取部分代码,我现在的函数是showDialog中点“确定”按钮时,返回值为1,点击“取消”按钮时,返回值为0,然后根据返回值a,来执行相应的动作,代码如下:
a= showDialog("商品名称:"  + goodsname + "\n商品条码号:" + ebno+"\n原商品数量:"+productnono 
       +"\n此次商品数量: "+eprono+"\n总商品数量:"+(Integer.parseInt(productnono)+Integer.parseInt(eprono)),1);//对商品进行更新
     if(a==0)//点击取消按钮
             {
             return;  
             }
     if(a==1)//点击确定按钮
             {
              //更新数据
              database.execSQL("update t_checkinfo SET number=? where barcode=? ",new Object[]{(Integer.parseInt(productnono)+Integer.parseInt(eprono)),ebno.toString()}); //对商品数量进行更新
                 Cursor c2=database.rawQuery("select * from t_checkinfo where number=?", new String[]{productnono.toString()});//判断此时的商品数量是否等于原商品数量,若等于则数据更新不成功
                 if(c2.moveToFirst())
                     {
                     showDialog("数据更新失败!",0);
                     
                     }
                 else
                     {
                     showDialog("数据更新成功!",0);
                     
                     }
             }
public int showDialog(String msg,int num) {
// TODO Auto-generated method stub
AlertDialog.Builder builder=new AlertDialog.Builder(InActivity.this);
if(num==0)
{
builder.setMessage(msg)
.setPositiveButton("确定",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id){
a=1;

}
});
}
if(num==1)
{
builder.setMessage(msg)
.setPositiveButton("确定",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id){
a=1;

}
}).setNegativeButton("取消",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id){
a=0;

}
});
}

AlertDialog alert=builder.create();
alert.show();
return a;
}


问题是:(1)红色部分 如果写成else,运行后显示如下
我是想先显示,然后点击对话框中的“确定“按钮之后 ,再显示“数据更新成功!”
现在我都没点击”确定“按钮,结果两个叠加显示出来了。跪求原因啊,各位大神们。

------解决思路----------------------
逻辑有问题。
showDialog方法传参时num为1,
然后show后直接return num.
再然后收到了返回值,直接更新,没有等待确认按钮。
原因就是这样。
------解决思路----------------------
即使初始值为-1,也解决不了问题。点了确定或取消后都没有任何反映。
因为他的方法是直接返回的,没有等待用户确定或取消。
解决的办法有:
1、楼上所说,在onClick中执行操作。
2、回调函数。
  相关解决方案