欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

android 对话框对于返回值的处理方法

程序员文章站 2022-05-01 17:54:18
android对话框是异步的,因此无法获得其返回值。 例如: 我们给出一个提示,让用户确认,按确定删除,按取消则不删除。 这时候要获得用户是否按了确定键,进行删除处理,采用alertdialog是获...

android对话框是异步的,因此无法获得其返回值。

例如: 我们给出一个提示,让用户确认,按确定删除,按取消则不删除。

这时候要获得用户是否按了确定键,进行删除处理,采用alertdialog是获取不到返回值的,因为alertdialog是异步的,非响应的。

当然如果不限麻烦可以采用打开activity的方式,或者popupwindow,这些方式是一种方案,但失去了对话框简洁的处理方式。

作为一名初学者,在尝试了slee()等方式后,没有找到好的方案。

最后,还是简化处理,将参数设置为对象的属性值,从对话框的确定事件中获取属性值,发送了一个消息,在消息中进行处理。 实际上也可以直接在确认事件中处理。

当然也可以自定义对话框,将属相值初始化到对话框中,进行处理。

简单列示一下处理的demo:

private bundle modeldata;

private static class myhandle extends handler{

private final weakreference mactivity;

public myhandler(mainactivity activity){

mactivity = new weakreference(activity);

}

@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();

}

};