2013-07-09 17 views

答えて

47

を却下されたかどうかを知りたいあなたはonDismissListener

http://developer.android.com/reference/android/content/DialogInterface.OnDismissListener.html

public Dialog createDialog() { 
    Dialog d = new Dialog(this); 
    d.setOnDismissListener(new OnDismissListener() { 
     @Override 
     public void onDismiss(final DialogInterface arg0) { 
      // do something 
     } 
    }); 
    return d; 
} 

を使用することができますのために何かをしたいです単に上書きDialogFragmentを使用しているonDismiss()

http://developer.android.com/reference/android/app/DialogFragment.html#onDismiss(android.content.DialogInterface)

+0

ありがとうとても! –

+0

ファンタスティックですが、回転しているデバイスの大文字小文字は認識されません。何か案は? – Fattie

+3

@JoeBlowデバイスがローテーションされ、アクティビティが再作成されると、 'onCreate'が呼び出され、' Bundle savedInstanceState'は 'null'と等しくなりません。 'onsaveInstanceState'に任意の状態(例えば、デバイスが回転する前にダイアログが表示されていたかどうかをブール値)を保存し、ここでそれを参照できます。 –

1

@Ken Wolfにはこの質問に対する素晴らしい答えがあります。

onDismissListenerは、API 17でのみ導入されたことを追加しました。より低いものをサポートしようとしている場合は、onCancelListenerを使用することができます。これはあまりうまくいかないが、backButtonやAlertDialogの外でのタップなどのケースをカバーします。あなたが任意のデータを受け取ることを期待するが、ただ、おそらくなくなってダイアログを知られたくない場合は

http://developer.android.com/reference/android/content/DialogInterface.OnCancelListener.html#onCancel(android.content.DialogInterface)

public Dialog createDialog() { 
    Dialog d = new Dialog(this); 
    d.setOnCancelListener(new DialogInterface.OnCancelListener() { 
     @Override 
     public void onCancel(DialogInterface dialog) { 
      // do something 
     } 
    }); 
} 
関連する問題