完全にカスタマイズされたビューを表示する DialogFragment を使用していますが、ネイティブ ボタンは使用されていません。dialog.SetCanceledOnTouchOutside(true); でダイアログをキャンセル可能に設定しました。また、ユーザーが外に触れたときに、ダイアログを閉じる必要があるかどうかを判断するコードを実行したいと考えています。私の問題は、イベントが発生したとき (キャンセル、破棄)、ダイアログは super.Dismiss(); の前でも既に閉じられていることです。そのため、却下をバイパスすることはできません。
私は多くのことを試し、フラグメントの OnDismiss と OnCancel をオーバーライドし (起動されたが遅くなる)、ダイアログ自体に dialogBuilder AND/OR のリスナーを設定し (起動されないか遅すぎる)、OnShow をオーバーライドしてリスナーなどをリセットしました。 ..
これに行き詰まって、何か考えはありますか?
PS: Xamarin の使用
public override Dialog OnCreateDialog(Bundle savedInstanceState)
{
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this.Activity);
alertDialogBuilder.SetView(myView);
AlertDialog dialog = alertDialogBuilder.Create();
dialog.SetCanceledOnTouchOutside(true);
return dialog;
}
public override void OnDismiss(IDialogInterface dialog)
{
//BreakPoint here, already dismissed
base.OnDismiss(dialog);
}