Windows Phone闹钟不断地重新打开

本文关键字:新打开 Phone 闹钟 Windows | 更新日期: 2023-09-27 17:59:27

我正在尝试为Windows Phone编写一个闹钟应用程序,该应用程序要求用户在闹钟响起时解决数学问题。现在我被卡住了,我有一个包含打开警报设置的主页,当警报响起时,用户会被重定向到另一个xaml页面,该页面要求用户输入随机生成的数学问题的答案才能关闭警报。我的问题是,一旦用户解决了问题并点击复选框,应用程序应该首先将alarmSet值设置为false,然后将用户重定向回主页:

private void Solve_Click(object sender, EventArgs e)
    {
        this.userSolve = Convert.ToInt32(answerInput.Text);
        if (userSolve != answer)
        {
            MessageBox.Show("Incorrect");
            //userAnswerInt = Convert.ToInt32(answerInput.Text);

        }
        else if (userSolve == answer)
        {
            MainPage.alarmSet.Value = false;
            NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
        }

    }

然后,当用户到达主页时,OnLoaded方法应该停止警报声并将一切重置为正常:

public async void OnLoaded(object sender, EventArgs e)
    {
        this.timer.Stop();
        this.alarmSound.Stop();

        alarmSet.Value = false;
        this.notificationSwitch.IsChecked = alarmSet.Value;
        this.timePicker.Value = new DateTime(1, 1, 1,
                                             alarmTime.Value.Hours,
                                             alarmTime.Value.Minutes,
                                             0
                                             );

        if (alarmSet.Value == true)
            this.alarmTimeText.Text = alarmTimeString;
        else if (alarmSet.Value == false)
            this.alarmTimeText.Text = "alarm off";

但问题是,每次用户解决数学问题时,他们都会被带回主页面,并立即重定向回闹钟铃声页面,因为闹钟仍然处于打开状态。这会产生一个无限循环的相互重叠的闹钟,我不知道为什么,即使我在导航回主页面之前将alarmSet.Value设置为false,警报仍然亮着……我还有什么需要做的吗?如何打开闹钟并将其设置为时钟所在的当前分钟,而不会立即响起?

Windows Phone闹钟不断地重新打开

我在Windows Phone的应用程序生命周期中没有看到"OnLoaded"事件。

参考:http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff817008(v=vs.105).aspx

您可以执行以下操作:

  1. 在Mainpage.xaml中,查看警报是否正在运行,如果警报设置为true,则将用户重定向到onNavigatedTo Event下的下一页。

  2. 在下一页中,将alarmSet设置为false,并将用户重定向到MainPage.xaml。onNavigatedTo将再次启动,但由于alarmSet为false,用户将不会重定向到任何位置。您可以在此处执行停止报警或其他任何操作。