2013-06-06 8 views
12

4.1.2のデバイスでAndroidのDialogsetOnDismissListenerを使用するとNoSuchMethodExceptionが表示されます。AlertDialog.BuilderのsetOnDismissListenerでAndroid NoSuchMethodExceptionが発生するのはなぜですか?

同じコードがバージョン4.2.2のエミュレータで動作しています。

new AlertDialog.Builder(this) 
    .setTitle(R.string.select_province) 
    .setOnDismissListener(new OnDismissListener() { 
     public void onDismiss(DialogInterface arg0) { 
     //== other stuff 
    } 
}).show(); 

答えて

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

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

関連する問題