【发布时间】:2020-03-17 18:18:22
【问题描述】:
我调试了自己的代码,发现每次从主页来回导航到第二页时我的 btnofflinecount 都会重置。重新加载后是否可以不重置计数器?
首先,用户将单击 btnOffline,这会将用户重定向到第二页。一旦用户单击 btnDone,它将返回主页面。同时,我将根据按钮单击获取开始和结束日期时间戳。现在,即使我有 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();
}
}
}
【问题讨论】:
-
首先,“我的
btndonecount每次来回导航时都会重置”是指btnofflinedone。因为我没有找到任何btndonecount。其次,为什么不在 App 类中设置一个静态变量?第三,请删除您之前提出相同问题的查询。 -
哦,是的,我的意思是 btnofflinedone 而不是 btndonecount。你是什么意思在应用程序类中设置一个静态值?抱歉,我对 xamarin 很陌生,所以我仍在弄清楚每个功能是如何工作的。
-
我会把它写成答案。显示代码比解释容易。 AFAIK,您只需要在第一次导航时将
mainpagevalue设置为SecondPage。我说的对吗? -
嗯,我认为更多的是在第一次点击时设置
mainpagevaluebtnofflinedone?我只想在第一次点击时获得btnOffline和btnofflinedone的时间戳。现在它适用于btnOffline,无论我在SecondPage中按btnDone之前来回导航多少次 -
这只是因为您每次导航时都在创建
SecondPage的新实例,并且由于btnofflinedone不是静态的,因此您每次检查btnDone_Clicked时都会检查新变量SecondPage。这就是我建议使用static变量的原因。我会在答案中显示,请稍候
标签: xaml xamarin xamarin.forms