现在截取部分代码,我现在的函数是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、回调函数。