Ответ 1
Метод setOnDismissListener
доступен только с API 17. Ваш эмулятор работает на API 17, ваше устройство не работает (оно фактически выполняется на API 16). Все уровни API перечислены здесь.
Я получаю NoSuchMethodException
при использовании setOnDismissListener
на Dialog
в Android на устройстве с 4.1.2.
Тот же код работает с эмулятором с версией 4.2.2.
new AlertDialog.Builder(this)
.setTitle(R.string.select_province)
.setOnDismissListener(new OnDismissListener() {
public void onDismiss(DialogInterface arg0) {
//== other stuff
}
}).show();
Любые идеи?
Метод setOnDismissListener
доступен только с API 17. Ваш эмулятор работает на API 17, ваше устройство не работает (оно фактически выполняется на API 16). Все уровни API перечислены здесь.
Обходной путь к этой проблеме заключается в том, чтобы сначала создать диалоговое окно следующим образом:
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)
AlerDialog.Builder. create()
Для тех, кто ищет этот ответ при использовании DialogFragment, метод Mario приведет к исключению IllegalStateException. В этом случае, вместо того, чтобы использовать setOnDismissListener, как было предложено, следует переопределить существующий метод OnDismiss.