近几天弄android自定义对话框的时候发现button点击事件触发不了,后面查了原来是AlertDialog会默认触发DialogInterface.OnClickListener事件,所以应在事件前面添加包名解决这个问题:android.view.View.OnClickListener;
/**
* 显示自定义的对话框
*
* @param context
* 上下文
* @param clickListeners
* 监听事件组
* @param resId
* 控件资源ID组
* @param viewId
* 视图资源ID
*/
public void show(Context context, android.view.View.OnClickListener[] clickListeners, int[] resId, int viewId) {
int resLength = resId.length;
int clickLength = clickListeners.length;
if (resLength != clickLength) {
// 判断传入的监听器和所要设置按钮事件数量是否相同,不同直接返回,避免抛出异常
return;
}
LayoutInflater inflater = LayoutInflater.from(context);
// 定义对话框的UI
View view = inflater.inflate(viewId, null);
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setView(view);
builder.create();
for (int i = 0; i < resLength; i++) {
// 控件响应对应的事件
view.findViewById(resId[i]).setOnClickListener(clickListeners[i]);
}
builder.show();
}