1

完全にカスタマイズされたビューを表示する DialogFragment を使用していますが、ネイティブ ボタンは使用されていません。dialog.SetCanceledOnTouchOutside(true); でダイアログをキャンセル可能に設定しました。また、ユーザーが外に触れたときに、ダイアログを閉じる必要があるかどうかを判断するコードを実行したいと考えています。私の問題は、イベントが発生したとき (キャンセル、破棄)、ダイアログは super.Dismiss(); の前でも既に閉じられていることです。そのため、却下をバイパスすることはできません。

私は多くのことを試し、フラグメントの OnDismiss と OnCancel をオーバーライドし (起動されたが遅くなる)、ダイアログ自体に dialogBu​​ilder 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);
}
4

5 に答える 5