一般来说对话框式的弹窗,都会有三个按钮,一个是确定,一个是取消,一个是关闭。上一期的 自定义弹窗(一) 中介绍了一个可定制三个按钮的自定义对话框式弹窗。
那怎样针对三个按钮进行事件的监听呢?
在上一期的代码中直接进行修改,废话不多说,直接上代码。
AlertHelper中的showTips方法直接修改:
/**
* 弹出提示窗
*
* @param titlestring
* 提示标题
* @param message
* 提示信息
* @param isshowcancle
* 是否显示取消按钮
* @param isshowclose
* 是否显示关闭按钮
* @param okstring
* 确定按钮字符
* @param canclestring
* 取消按钮字符
*/
public static Map<String, Object> showTips(Context context, String titlestring, String message, boolean isshowcancle, boolean isshowclose, String okstring, String canclestring)
{
final Map<String, Object> map = new HashMap<String, Object>();
final AlertDialog dlg = new AlertDialog.Builder(context).setCancelable(false).create();
dlg.show();
map.put("AlertDialog", dlg);
Window window = dlg.getWindow();
window.setContentView(R.layout.alertdialog_showtxt);
TextView title = (TextView) window.findViewById(R.id.AlertDialogTitle);
Button btn_close = (Button) window.findViewById(R.id.btn_close);
TextView text = (TextView) window.findViewById(R.id.AlertDialogText);
Button ok = (Button) window.findViewById(R.id.btn_ok);
Button cancel = (Button) window.findViewById(R.id.btn_cancel);
title.setTypeface(typefacenormal);
text.setTypeface(typefacenormal);
ok.setTypeface(typefacebold);
cancel.setTypeface(typefacebold);
title.setText(titlestring);
text.setText(Html.fromHtml(message));
if (isshowcancle)
{
cancel.setVisibility(View.VISIBLE);
cancel.setText(canclestring);
} else
{
cancel.setVisibility(View.GONE);
}
if (isshowclose)
{
btn_close.setVisibility(View.VISIBLE);
} else
{
btn_close.setVisibility(View.GONE);
}
ok.setText(okstring);
ok.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
dlg.cancel();
map.put("status", 1);
}
});
cancel.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
dlg.cancel();
map.put("status", 2);
}
});
btn_close.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
dlg.cancel();
map.put("status", 0);
}
});
return map;
}
上面直接返回的是一个 Map<String, Object>。
接下来是在引用该方法的地方直接进行监听
如下
final Map<String, Object> map1 = AlertHelper.showTips(Main.this, "某某提示您", " <font color=\"red\">含关闭按钮、含取消按钮</font>", true, true, "确定", "取消");
AlertDialog dlg1 = (AlertDialog) map1.get("AlertDialog");
dlg1.setOnCancelListener(new OnCancelListener()
{
@Override
public void onCancel(DialogInterface dialog)
{
Message msg = new Message();
msg.what = 0;
int status = ((Integer) map1.get("status"));
switch (status)
{
case 0:
msg.obj = "点击了弹窗1的关闭按钮";
break;
case 1:
msg.obj = "点击了弹窗1的确定按钮";
break;
case 2:
msg.obj = "点击了弹窗1的取消按钮";
break;
}
messageHandler.sendMessage(msg);
}
});
break;