我真的有问题解决此问题。对象引用是必需的非静态字段,方法或属性'MainPage.readOut'
'HandleNewTag'方法在Droid MainActivity类中。这是一个非静态的,但抱怨它调用的'MainPage.HandleNFC'方法,所以我将它改为static,并且没有错误。
'MainPage.HandleNFC'方法也调用非静态方法。我将其更改为静态无效以阻止错误。然后在那个方法中,它设置了XAML控件的一些属性,它抱怨控件不是静态的,我无法改变。
我在互联网上搜索高和低来解决这个问题,虽然我可以找到类似的错误,但他们都没有提到非静态控制问题。
MainActivity.cs
public void HandleNewTag(object sender, NfcFormsTag e)
{
//MainPage mp = new MainPage();
byte[] bytes = e.Id;
Console.WriteLine(BitConverter.ToString(bytes));
if (BitConverter.IsLittleEndian)
Array.Reverse(bytes);
Console.WriteLine(BitConverter.ToString(bytes));
// Call method to send byte stream across machine boundaries.
// Receive byte stream from beyond machine boundaries.
Console.WriteLine(BitConverter.ToString(bytes));
if (BitConverter.IsLittleEndian)
Array.Reverse(bytes);
Console.WriteLine(BitConverter.ToString(bytes));
int result = BitConverter.ToInt32(bytes, 0);
MainPage.HandleNFC(result.ToString());
}
MainPage.xaml中
public static void HandleNFC(string convertedtag)
{
addToReadout(convertedtag);
}
public static void addToReadout(string text)
{
Label label1 = new Label { Text = "Successfully clocked out @ " + text, TextColor = Color.Black };
StackLayout sl = new StackLayout();
readOut.Children.Add(label1);
readOut.BackgroundColor = Color.Black;
readOut.Children.Count();
}
这听起来像你开始时通过只是在'static'关键字扔在这里和那里只是为了让错误消失工作。这是错误的做法。 *应该*这些方法首先是“静态”的? – David
是的你是对的,但是如果没有他们,它根本就行不通。第一种方法(Droid中的HandleNewTag)似乎不是静态的,但它抱怨它调用的方法(MainPage.HandleNFC)不是静态的。 – connersz
也许它需要一个* MainPage'实例来调用'.HandleNFC()'在那个实例上?目前,您正试图将该方法称为静态。使*一切*静态来解决编译器错误听起来不理想。 – David