我真的有問題解決此問題。對象引用是必需的非靜態字段,方法或屬性'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