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

本文探讨了Android中使用AlertDialog实现同步操作的挑战,并提供了一种通过消息传递机制来间接获取对话框返回值的方法。此外,还介绍了如何利用自定义对话框及属性值来简化流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

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

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

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

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

简单列示一下处理的demo:

   private Bundle  moDelData;

   private static class myHandle extends Handler{

       private final WeakReference<MainActivity> mActivity;

       public  myHandler(MainActivity activity){

             mActivity = new WeakReference<MainActivity>(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();

        }

    };







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值