android 对话框对于返回值的处理方法
android对话框是异步的,因此无法获得其返回值。
例如: 我们给出一个提示,让用户确认,按确定删除,按取消则不删除。
这时候要获得用户是否按了确定键,进行删除处理,采用alertdialog是获取不到返回值的,因为alertdialog是异步的,非响应的。
当然如果不限麻烦可以采用打开activity的方式,或者popupwindow,这些方式是一种方案,但失去了对话框简洁的处理方式。
作为一名初学者,在尝试了slee()等方式后,没有找到好的方案。
最后,还是简化处理,将参数设置为对象的属性值,从对话框的确定事件中获取属性值,发送了一个消息,在消息中进行处理。 实际上也可以直接在确认事件中处理。
当然也可以自定义对话框,将属相值初始化到对话框中,进行处理。
简单列示一下处理的demo:
private bundle modeldata;
private static class myhandle extends handler{
private final weakreference
public myhandler(mainactivity activity){
mactivity = new weakreference
}
@override
public void handlemessage(message msg){
final mainactivity aty = mactivity.get();
bundle vodata = msg.getdata();
if (aty != null) {
//进行处理
}
}
};
private myhandle mhandler = new myhandler(this);
private onclicklistener molistener = new onclicklistener(){
@override
public void onclick(view pview){
imagebutton vodel = (imagebutton)pview;
modeldata = (bundle)pview.gettag(r.id.tag_data);
string vstxnr = modeldata.getstring("txnr");
alertdialog.builder builder = new alertdialog.builder(pview.getcontext());
builder.settitle(r.string.tishi).
seticon(r.drawable.editbg).
setmessage("您将删除内容:"+vstxnr).
setpositivebutton("确定", new dialoginterface.onclicklistener(){
@override
public void onclick(dialoginterface ailog, int whick){
message msg = message.obtain();
msg.setdata(modeldata);
mhandler.sendmessage(msg);
}
}).setnegativebutton("取消", null);
alertdialog alertdialog = builder.create();
alertdialog.show();
}
};
推荐阅读