拿去就能用的 AlertDialog 封装工具类

我们先来看下下图的应用场景:

addblacklist
deletefriend
exitApp

像这样的 AlertDialog 的应用场景是不是很多 , 每个地方都要这样去编写 代码行数也不少. 使用频繁可以复用的代码我们应该将其进行封装, 增强代码的可阅读性 减少代码冗余,更多的精力关注在本身逻辑上.而不是去编写重复的代码

先看代码:

public class DialogWithYesOrNoUtils {

    private static DialogWithYesOrNoUtils instance = null;

    public static DialogWithYesOrNoUtils getInstance() {
        if (instance == null) {
            instance = new DialogWithYesOrNoUtils();
        }
        return instance;
    }

    private DialogWithYesOrNoUtils(){}

    public void showDialog(Context context, String titleInfo, final DialogWithYesOrNoUtils.DialogCallBack callBack) {
        AlertDialog.Builder alterDialog = new AlertDialog.Builder(context);
        alterDialog.setMessage(titleInfo);
        alterDialog.setCancelable(true);

        alterDialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                callBack.exectEvent();
            }
        });
        alterDialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.cancel();
            }
        });
        alterDialog.show();
    }

    public interface DialogCallBack {
        void exectEvent();
    }
}
工具类的代码比较简单 copy 粘贴过去就能用 封装了一个 单例 和一个工具方法 和 接口,使用的时候我们也只需要一行代码就能搞定. 填写的参数 1 上下文 context 2 展示的信息 titleString 3 接口回调

使用:

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {

        if (KeyEvent.KEYCODE_BACK == event.getKeyCode()) {

            DialogWithYesOrNoUtils.getInstance().showDialog(mContext, "确定退出应用?", new DialogWithYesOrNoUtils.DialogCallBack() {
                @Override
                public void exectEvent() {
                    if (RongIM.getInstance() != null)
                        RongIM.getInstance().disconnect(true);

                    try {
                        Thread.sleep(500);
                        android.os.Process.killProcess(Process.myPid());
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            });

        }

        return false;
    }
上面代码重写了 返回 Back 一行代码就搞定 你只需要去关注 exectEvent() 方法里面的逻辑即可 , 是不是相当简单但是实用呢~ 小伙伴们赶紧拿走吧
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值