本文将带你了解Android应用开发之android 对话框对于返回值的处理方法,希望本文对大家学Android有所帮助。
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();
}
};
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!