学习笔记——Dialog回调

刚才看到我的上一篇文章都是三个月前的了,这次也懒得找借口了(这是有多懒)。过了这么久,当然还是存了不少干货了,刚好最近想整理下这段时间的内容。上一篇文章是关于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,解决了。不过这种方式,我当时使用的时候脑袋有点没转过来。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值