天天看点

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

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

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

像这样的 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();
                        android.os.Process.killProcess(Process.myPid());
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            });

        }

        return false;
    }
           

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