Функция PopupWindow Dismiss работает в одном окне, но не в другом - PullRequest
0 голосов
/ 28 февраля 2019

У меня в настоящее время есть 2 PopupWindow, один уходит сразу после Button нажатия.

    private async void ClosePopupWindow(object sender, View.TouchEventArgs e)
    {
        _popUpReceiptWindow.Dismiss();
        await Task.Delay(5000);
        Intent intent = new Intent(this, typeof(MainActivity));
        intent.SetFlags(Intent.Flags);
        Finish();
    }

Из-за природы этого PopupWindow он закрывается и затем переключается на другое Activity.

Окно, которое не закрывает правильно, это строка кода.

    private void CloseEftWindow(object sender, View.TouchEventArgs e)
    {
        _popupEftWindow.Dismiss();
    }

Вот инициализация окна, которое не закрывается должным образом:

    private void EftButton_OnTouchedAsync(object sender, View.TouchEventArgs e)
    {
        _eftButton.Touch -= EftButton_OnTouchedAsync;

        var popupEftView = LayoutInflater.Inflate(Resource.Layout.CreditCardPopupWindow, null);

        _creditCardState = EftType.EftCardInserted;
        _popUpCashbackButton = popupEftView.FindViewById<Button>(Resource.Id.popupCreditCardCashBackButton);
        _popupEFTCancelButton = popupEftView.FindViewById<Button>(Resource.Id.popupCreditCardCancel);

        _popupEftWindow = new PopupWindow(popupEftView, _subTotalLayout.Width, 500, true);
        _popupEftWindow.ShowAtLocation(_subTotalLayout, GravityFlags.Bottom, 0, 0);
        _popupEFTCancelButton.Touch += CloseEftWindow;

        SubscribeCreditCardElements(popupEftView);

        CreditCardStateTranstion(EftType.EftCardInserted);

        _popUpCashbackButton.Touch += CashbackButtonSelected;

        _eftButton.Touch += EftButton_OnTouchedAsync;

    }

И вот инициализация, которая закрывается правильно:

    private void UnderZeroBalanceReached()
    {
        View popUpView = LayoutInflater.Inflate(Resource.Layout.PopupView, null);


        if (_totalAmount <= 0)
        {
            _popUpOkButton = popUpView.FindViewById<Button>(Resource.Id.popupReceiptYesButton);
            _popUpReceiptWindow = new PopupWindow(popUpView, _subTotalLayout.Width, 500, true);
            _popUpReceiptWindow.ShowAtLocation(_subTotalLayout, GravityFlags.Bottom, 0, 0);
            _popUpOkButton.Touch += ClosePopupWindow;

            DisableRightSidePaneButtons();
        }

    }

Кто-нибудь может увидеть, что я делаю неправильно?Я использовал точки останова при закрытии всплывающего окна eft, но не могу понять, почему оно на самом деле не закрывается.

1 Ответ

0 голосов
/ 04 марта 2019

Я не совсем уверен, почему, но внутри метода DisableRightSidePaneButtons () есть строки кода, которые отключают такие элементы, как кнопки и текстовые представления, и делают их невидимыми.PopUpWindow будет закрыто, только если инициирующая его кнопка была отключена и сделана невидимой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...