C# 为什么可以';我不能从应用程序中的另一个类调用这个公共方法吗?
我添加了一个公共方法来返回变量pageLoaded,但是visual studio显示了这个错误“MainPage.pageLoaded()方法需要对象引用,而不是静态的”。逻辑是仅当pageLoaded为true时才完成启动活动。如果有人对此有更好的想法,我很高兴知道,我刚刚开始学习C#/Xamarin 我的代码:C# 为什么可以';我不能从应用程序中的另一个类调用这个公共方法吗?,c#,xamarin,xamarin.forms,C#,Xamarin,Xamarin.forms,我添加了一个公共方法来返回变量pageLoaded,但是visual studio显示了这个错误“MainPage.pageLoaded()方法需要对象引用,而不是静态的”。逻辑是仅当pageLoaded为true时才完成启动活动。如果有人对此有更好的想法,我很高兴知道,我刚刚开始学习C#/Xamarin 我的代码: namespace MyApp { public partial class MainPage : ContentPage { private bo
namespace MyApp
{
public partial class MainPage : ContentPage
{
private bool pageLoaded = false;
public MainPage()
{
InitializeComponent();
webnav.HeightRequest = 1000;
webnav.WidthRequest = 1000;
webnav.Source = "https://www.example.com";
}
public void Webnav_Navigated(object sender, WebNavigatedEventArgs e)
{
pageLoaded = true;
}
public bool PageLoaded()
{
return pageLoaded;
}
}
}
代码2:
...
...
using MyApp;
namespace MyApp.Droid
{
[Activity(Label = "My App", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = false, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnCreate(Bundle savedInstanceState)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
LoadApplication(new App());
while (true)
{
if (MainPage.PageLoaded())
{
SplashScreen.fa.Finish();
break;
}
}
}
}
}
由于MainPage类不是静态的,因此需要创建MainPage类的对象,并使用该对象从该类调用方法。问题: 您的
.PageLoaded()
方法是一个实例方法。只能在类型为MainPage
您在启动屏幕中对它的引用试图将其作为静态方法调用,这有两个问题:
MainPage
编辑:
为了进一步澄清这一区别:
// calling a method against the static definition of the class
MainPage.PageLoaded();
// calling a method against an instance of the class
new MainPage().PageLoaded();
上面的代码不是一个解决方案,而是一个实例方法和静态方法之间差异的示例。您的
PageLoaded
方法不应该是静态的,因为您已经将所有内容都安排好了。关于静态与实例的问题,您是正确的。不幸的是,在他的活动中创建另一个MainPage
实例并不能解决这个特殊问题,也不能解决实例与静态方法之间的误解。我只是试图通过手机帮助他解决错误,没有教他最佳实践。人们现在无缘无故地投票了。谢谢你的回答。如果你允许的话,我还有一个问题。显示主页上的启动屏幕。会是一个有效的splashscreen吗?我的意思是,启动屏幕不是作为一种活动,一种“本地”的特性来引导负载吗?