这是我的代码:
mDialog.show();
mDialog.setOnShowListener(new OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
//some code
}
});
断点显示永远不会调用//some code
。你能帮我理解发生了什么吗?
它是API 8及更高版本(由我的应用程序支持)
答案 0 :(得分:21)
我可能错了,但你应该在对话框上调用show()
之前设置监听器。
答案 1 :(得分:3)
试试这个:
mDialog.setOnShowListener(new OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
//some code
}
});
mDialog.show();
这样可以确保在显示对话框之前注册了侦听器。
答案 2 :(得分:0)
声明并初始化AlertDialogBuilder:
final AlertDialog.Builder dialog =new AlertDialog.Builder(getActivity());
设置对话框参数,如:
警报按钮(正面,负面或中性),
setTitle,setIcon ..
不要在这里调用方法 - show() - 从我的回答中读取第二个回答,2个帖子
然后,
创建新的“警报”对话框,该对话框使用具有指定参数的第一个对话框:
final AlertDialog alert=dialog.create();
并设置OnShowListener,例如:
alert.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialogInterface) {
Button button = alert.getButton(AlertDialog.BUTTON_POSITIVE);
Drawable drawable = getActivity().getResources().getDrawable(
R.drawable.error);
drawable.setBounds((int) (drawable.getIntrinsicWidth() * 0.5),
0, (int) (drawable.getIntrinsicWidth() * 1.5),
drawable.getIntrinsicHeight());
button.setCompoundDrawables(drawable, null, null, null);
}
});
最后一步是:alert.show();