在使用4.1.2的设备上在Android上的NoSuchMethodException
上使用setOnDismissListener
时,我得到Dialog
。
相同的代码正在使用版本4.2.2的模拟器。
new AlertDialog.Builder(this)
.setTitle(R.string.select_province)
.setOnDismissListener(new OnDismissListener() {
public void onDismiss(DialogInterface arg0) {
//== other stuff
}
}).show();
有什么想法吗?
答案 0 :(得分:27)
解决此问题的方法是首先创建如下对话框:
AlertDialog dialog = new AlertDialog.Builder(this).setTitle(R.string.select_province).create();
然后将侦听器直接设置到对话框:
dialog.setOnDismissListener( new OnDismissListener() {
public void onDismiss(DialogInterface arg0) {
//== other stuff
} );
然后如果你还想表现出来:
dialog.show();
结果相同,自API 1起支持所有这些方法。
AlertDialog。setOnDismissListener (DialogInterface.OnDismissListener listener)
AlerDialog.Builder。create()
答案 1 :(得分:6)
setOnDismissListener
方法仅在API 17中可用。您的模拟器在API 17上运行,而您的设备不在(它实际上在API 16上运行)。枚举所有API级别here。
答案 2 :(得分:1)
对于在使用DialogFragment时寻找此答案的任何人,Mario的方法将导致IllegalStateException。在这种情况下,不应该按照建议使用setOnDismissListener,而应该覆盖Fragment现有的onDismiss方法。