从 ViewModel 调用方法导致 System.NullReferenceException
Calling method from ViewModel cause System.NullReferenceException
我是 Xamarin.Forms 的新手,我正在开发一个跨平台的应用程序。在应用程序中,用户需要登录 Facebook 和 Twitter 才能参加某些特定活动。所以我在设置页面设置了一个静态登录功能,加入了活动页面。我需要检查登录是否成功,并在每次用户打开设置页面时在页面上显示用户名。所以我决定在后面的代码中调用检查方法,在 OnAppearing 方法中。但它会调用 NullReferenceException。如果我只是将整个代码从检查方法中移出,设置页面上没有任何变化。
下面是我的代码:
public SettingAct()
{
InitializeComponent();
}
protected override void OnAppearing()
{
(BindingContext as SettingViewModel).CekLogin();
}
我的ViewModel的检查方法:
internal void CekLogin()
{
Console.WriteLine("LoginCheck");
if (SessionManager.FacebookLogin())
{
FacebookName = SessionManager.FacebookName();
FbImage = "fb_sett_active.png";
Console.WriteLine("Facebook logged in");
}
else
{
FacebookName = "Facebook";
FbImage = "fb_sett.png";
Console.WriteLine("Facebook not logged in");
}
if (SessionManager.TwitterLogin())
{
TwitterName = SessionManager.TwitterName();
TwitImage = "twitter_sett_active.png";
Console.WriteLine("Twitter logged in");
}
else
{
TwitterName = "Twitter";
TwitImage = "twitter_sett.png";
Console.WriteLine("Twitter not logged in");
}
}
我很困惑为什么它不起作用,因为我在我的主页上做同样的事情,每次出现主页时我都会刷新用户点数。
(BindingContext as MainViewModel).RefreshKuliahLogPoint();
请在评论中让我知道您需要的任何细节,希望即使我的英语不好也能理解我的问题。
BindingContext 属性 将 return 为 null,直到您实际将其设置为某个值。
public SettingAct()
{
InitializeComponent();
BindingContext = new SettingViewModel();
}
protected override void OnAppearing()
{
(BindingContext as SettingViewModel).CekLogin();
}
我是 Xamarin.Forms 的新手,我正在开发一个跨平台的应用程序。在应用程序中,用户需要登录 Facebook 和 Twitter 才能参加某些特定活动。所以我在设置页面设置了一个静态登录功能,加入了活动页面。我需要检查登录是否成功,并在每次用户打开设置页面时在页面上显示用户名。所以我决定在后面的代码中调用检查方法,在 OnAppearing 方法中。但它会调用 NullReferenceException。如果我只是将整个代码从检查方法中移出,设置页面上没有任何变化。
下面是我的代码:
public SettingAct()
{
InitializeComponent();
}
protected override void OnAppearing()
{
(BindingContext as SettingViewModel).CekLogin();
}
我的ViewModel的检查方法:
internal void CekLogin()
{
Console.WriteLine("LoginCheck");
if (SessionManager.FacebookLogin())
{
FacebookName = SessionManager.FacebookName();
FbImage = "fb_sett_active.png";
Console.WriteLine("Facebook logged in");
}
else
{
FacebookName = "Facebook";
FbImage = "fb_sett.png";
Console.WriteLine("Facebook not logged in");
}
if (SessionManager.TwitterLogin())
{
TwitterName = SessionManager.TwitterName();
TwitImage = "twitter_sett_active.png";
Console.WriteLine("Twitter logged in");
}
else
{
TwitterName = "Twitter";
TwitImage = "twitter_sett.png";
Console.WriteLine("Twitter not logged in");
}
}
我很困惑为什么它不起作用,因为我在我的主页上做同样的事情,每次出现主页时我都会刷新用户点数。
(BindingContext as MainViewModel).RefreshKuliahLogPoint();
请在评论中让我知道您需要的任何细节,希望即使我的英语不好也能理解我的问题。
BindingContext 属性 将 return 为 null,直到您实际将其设置为某个值。
public SettingAct()
{
InitializeComponent();
BindingContext = new SettingViewModel();
}
protected override void OnAppearing()
{
(BindingContext as SettingViewModel).CekLogin();
}