Xamarin формы кнопки счетчик кликов с навигацией - PullRequest
0 голосов
/ 17 марта 2020

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

Сначала пользователь нажимает btnOffline, который перенаправляет пользователя на вторую страницу. Как только пользователь нажмет на btnDone, он go вернется на главную страницу. В то же время я возьму отметку времени начала и окончания на основе нажатия кнопки. Прямо сейчас моя отметка времени окончания будет обновляться, даже если у меня есть оператор if для проверки условия. (Я получу отметку времени окончания даты для события btnDone) Я обнаружил, что мой счетчик сбрасывается при переходе назад со второй страницы на главную страницу, пока не активируется btnDone_Clicked. Кто-нибудь знает как это решить?

Главная страница

public partial class MainPage : ContentPage
{
    public string mainpagevalue;
    int offlinecount = 0;

    public MainPage()
    {
        InitializeComponent();

    }

    private void btnOffline_Clicked(object sender, EventArgs e)
    {
        offlinecount++;

        Navigation.PushAsync(new SecondPage(this, lblEndDT));


        if (offlinecount == 1)
        {
            string currentDT = DateTime.Now.ToString();
            lblStartDT.Text = currentDT;

        }


    }

Вторая страница

    public partial class SecondPage: ContentPage
    {
    Label lblEndDT;
    MainPage mainpage;
    int btnofflinedone = 0;

    public SecondPage()
    {
        InitializeComponent();
    }

    public SecondPage(MainPage mPage, Label endDT)
    {
        InitializeComponent();
    lblEndDT = endDT;
    mainpage = mPage;

    }
    protected void btnDone_Clicked(object sender, EventArgs e)
    {


        btnofflinedone++;

        if (btnofflinedone == 1)
        {
            string edt = DateTime.Now.ToString();
            lblEndDT.Text = edt;
            mainpage.mainpagevalue = lblEndDT.Text;

        }

        Navigation.PopAsync();


       }

     }
   } 

1 Ответ

0 голосов
/ 17 марта 2020

Прежде всего, пожалуйста, используйте MS do c правила именования , они значительно улучшают читабельность вашего кода. Ваш запрос может быть легко понят, и вы сможете быстро получить помощь.

Теперь, для вышеуказанной проблемы,

Вы создаете новый экземпляр SecondPage каждый раз, когда переходите от нажатия кнопки MainPage в следующей строке кода.

Navigation.PushAsync(new SecondPage(this, lblEndDT));

И вы проверяете переменную SecondPage non-stati c в btnDone_Clicked. Каждый раз, когда вы создаете новый экземпляр, нестатическая c переменная будет создаваться заново и сбрасываться по умолчанию. Вот почему вы не можете ограничить обновление метки TimeStamp.

Для быстрого исправления - добавьте stati c в btnofflinedone

static int btnofflinedone = 0;

Мое предложение - сдвинуть stati c btnofflinedone переменная от SecondPage до App класс

App.Xaml.cs

public partial class App : Application
{
    internal static int btnofflinedone { get; set; } = 0;

    public App()
    {
    ......

Удалить btnofflinedone из SecondPage и замените btnofflinedone на App.btnofflinedone.

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