一个不一样的diaolog 带回调

 正常情况当我们需要实现一个dialog 时候我们需要还需要点击按钮时候   如果我们在当前界面写的时候显的代码有点乱 ,但是当我们将代码封装到一个类里面的时候     一些操作都是需要回调的 这样处理起来可能不是那么方便     下面是我的代码风格  这样做的话相对比较简单   

public class HintAlertDialog extends Dialog {

    Context mcontext;
    String  toastdiaolog;
    private ClickListenerInterface clickListenerInterface;


    public HintAlertDialog(@NonNull Context context, int themeResId, String  dialog) {
        super(context, themeResId);
        this.mcontext = context;
        toastdiaolog=dialog;
        init(context,dialog);
    }

    public void init(Context context,String  dialog) {
        LayoutInflater inflater = LayoutInflater.from(context);
        View view = inflater.inflate(R.layout.activity_fragment_alertdialog, null);
        setContentView(view);
        ImageView iv_close = view.findViewById(R.id.iv_close);
        TextView  textView=view.findViewById(R.id.tv_toast);
        Button btn_sure = view.findViewById(R.id.btn_sure);
        textView.setText(dialog);
        iv_close.setOnClickListener(new clickListener());
        btn_sure.setOnClickListener(new clickListener());
        WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
        layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
        int paddingLeft = ViewUtils.dpToPx(43);
        getWindow().getDecorView().setPadding(paddingLeft, 0, paddingLeft, 0);
        getWindow().setAttributes(layoutParams);

    }

    public void setClicklistener(ClickListenerInterface clickListenerInterface) {
        this.clickListenerInterface = clickListenerInterface;
    }

    private class clickListener implements View.OnClickListener {
        @Override
        public void onClick(View v) {
            int id = v.getId();
            switch (id) {
                case R.id.iv_close:
                    clickListenerInterface.doCancel();

                    break;
                case R.id.btn_sure:
                    clickListenerInterface.doConfirm();
                    break;
            }
        }

    }

    public interface ClickListenerInterface {

        public void doConfirm();

        public void doCancel();
    }
}

这样的话 我们只是需要给按钮写一个点击回调接口就行 ,其他操作都是在主界面进行操作的  这样的话  便于我们稍后进行操作 

 接下来 我们来看看主界面的代码   

    HintAlertDialog hintDialog = new HintAlertDialog(getContext(), R.style.alert_style, "");
    hintDialog.show();
    hintDialog.setClicklistener(new HintAlertDialog.ClickListenerInterface() {
        @Override
        public void doConfirm() {
            hintDialog.dismiss();

        }

        @Override
        public void doCancel() {
            hintDialog.dismiss();
        }
    });
    break;
}
这样我们封装好的diaolog 不需要做任何通知去通知主界面   这样也是符合我们正常的代码风格的    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值