学习笔记——Dialog回调

来源:互联网 发布:linux snmp 编辑:程序博客网 时间:2024/05/21 09:05

刚才看到我的上一篇文章都是三个月前的了,这次也懒得找借口了(这是有多懒)。过了这么久,当然还是存了不少干货了,刚好最近想整理下这段时间的内容。上一篇文章是关于Dialog的,那么这篇文章就从它入手吧。接着往下写,很多时候,我们的Dialog所运用的场景和可能不是当前页面。

还是先上图:

就像这样的场景,一个发布页面,当用户将内容填写完毕后,发布,我们需要弹窗提示用户再仔细审查一遍,或者当时用户不想直接发布,添加到草稿等。

但是,发现没有,弹出这个Dialog,当用户点击确定的时候,我们怎样在这个确定的单击事件中,将他上面所填写的内容发送到服务器便成问了问题。

今天,我给大家带来了两个解决方案,大家根据自己的场景选择就好:

1、可以用集合,Map等存放数据的容器将上面这些数据保存,弹出Dialog的时候传递到Dialog里面,在Dialog里接收这个容器,再依次拿出数据,用网络框架发送到服务器即可。举个栗子:

Map<String, Object> params = new HashMap<String, Object>();params.put("ISO_ID", workOrder.ISO_ID);params.put("IR_ID", workOrder.IR_ID);params.put("IR_CD", workOrder.IR_CD);params.put("IR_TITLE", workOrder.IR_TITLE);params.put("LATN_ID", sLoginInfoVo.USER.USER_PRIV.LATN_ID);
。。。

然后在Dialog的构造方法中将params这个Map拿到。然后在确定的单击事件中发送到服务器就好:

private void commitData(Map<String, Object> params, String serviceCode) {    AppRestClient.post(serviceCode, params,            new AppResponseHandler<RequsetVo>(RequsetVo.class) {                @Override                public void onSuccess(RequsetVo result) {                    Intent intent = new Intent(AreaGuestActivity.this, CommonActivity.class);                    startActivity(intent);                    finish();                    ToastUtil.showLong(AreaGuestActivity.this, "提交成功!!");                }                @Override                public void onFailure(int errorCode, String errorMsg) {                    ToastUtil.showLong(AreaGuestActivity.this, errorMsg);                }            });}
当然,这个不是今天的重点,今天的重点是第二个。

2、使用接口回调的方式:

我们可以在Dialog的方法里将确定发布的方法回调出去,代码如下:

public interface OnClickListener{    /**     * 当点击某条的时候回调这方法     */    public void onItemClick(Context context,boolean cancelorsure);}//定义接口private OnClickListener onClickListener;/** * 设置Item的点击监听 * @param listener */public void setOnClickListener(OnClickListener listener){    this.onClickListener=listener;}
在单击事件中:

mbtn_sure.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View view) {        dismiss();        if(onClickListener!=null) {            onClickListener.onItemClick(context,true);        }    }});
在发布页面,当用户确定发布的单击事件里(一些逻辑处理后,至少得做个非空判断吧):

HintDialog myDialog = new HintDialog(PublishActivity.this);myDialog.show();myDialog.setOnClickListener(new HintDialog.OnClickListener() {    @Override    public void onItemClick(Context context, boolean cancelorsure) {            postOkHttpUtils_publish();//发布到服务器的方法    }});
ok,解决了。不过这种方式,我当时使用的时候脑袋有点没转过来。


原创粉丝点击