【发布时间】:2014-06-17 12:58:50
【问题描述】:
我正在开发一个涉及通过 ProximityDevice 类读取 NFC 标签的应用程序。这个想法是,当标签在 main_page 上成功读取时,它将导航到 second_page,所有标签内容的处理都将在此处完成。当它到达 second_page 时,应用程序必须无法再读取任何标签,除非它回到 main_page。
问题是当应用导航到second_page时,它仍然会读取标签并执行我在main_page上声明的方法。似乎方法是在 second_page 上继承的。
有没有办法: (1) 完全禁用读感应器,必要时重新启用;或者 (2) 覆盖从main_page继承的方法?
我尝试过: (1)在导航到下一页之前使用 stopSubscribingForMessage ,但它仍然读取后续标签; (2) 在 second_page 上声明读取标签的新方法 - 这些新方法与 main_page 中的方法一起执行。
这是我的代码:
(主页面)
public MainPage()
{
InitializeComponent();
device = ProximityDevice.GetDefault();
if (device != null)
{
device.DeviceArrived += ProximityDeviceArrived;
}
else
{
MessageBox.Show("Failed to initialize proximity device.");
}
}
public void ProximityDeviceArrived(Windows.Networking.Proximity.ProximityDevice device)
{
device.SubscribeForMessage("NDEF", ProcessDeviceMessage);
}
public void ProcessDeviceMessage(ProximityDevice sender, ProximityMessage message)
{
//reads tag content
sender.StopSubscribingForMessage(message.SubscriptionId);
NavigationService.Navigate(new Uri("/Result.xaml?tagContent=" + tagContent, UriKind.Relative));
}
(第二页)
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedTo(e);
string tagContent = NavigationContext.QueryString["tagContent"];
//process tag content
device = ProximityDevice.GetDefault();
if (device != null)
{
device.DeviceArrived += ProximityDeviceArrived;
}
else
{
MessageBox.Show("Failed to initialize proximity device.");
}
}
public void ProximityDeviceArrived(Windows.Networking.Proximity.ProximityDevice device)
{
device.SubscribeForMessage("NDEF", ProcessDeviceMessage);
}
public void ProcessDeviceMessage(ProximityDevice sender, ProximityMessage message)
{
Debug.WriteLine("You tapped your tag again. I will do nothing.");
}
我真的希望你能帮帮我!
【问题讨论】:
标签: c# visual-studio-2012 windows-phone-8 nfc overriding