12

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();

何か案は?

4

3 に答える 3

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 以降でサポートされています。

アラートダイアログ。setOnDismissListener (DialogInterface.OnDismissListener リスナー)

AlerDialog.Builder. 作成()

于 2013-06-28T09:24:03.943 に答える
1

DialogFragment を使用しているときにこの回答を探している人にとって、Mario のメソッドは IllegalStateException になります。この場合、提案されているように setOnDismissListener を使用するのではなく、フラグメントの既存の onDismiss メソッドをオーバーライドする必要があります。

于 2015-03-03T16:11:22.143 に答える