我们先来看下下图的应用场景:
像这样的 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() 方法里面的逻辑即可 , 是不是相当简单但是实用呢~ 小伙伴们赶紧拿走吧