导航到注册播放器详细信息屏幕时,在Xamarin.Forms中抛出对象引用错误

导航到注册播放器详细信息屏幕时,在Xamarin.Forms中抛出对象引用错误,xamarin,xamarin.forms,Xamarin,Xamarin.forms,单击Xamarin.Forms应用程序中的Register\u OnClicked按钮,系统将抛出system.NullReferenceException:对象引用未设置为对象的实例此按钮将允许应用程序导航到系统保存数据的播放器注册详细信息屏幕。有人能告诉我错误的原因吗?我还不能找出错误的原因,已经重新启动了应用程序,执行了clean build操作,但仍然是一样的 数据库库使用:sqlite net pcl //MainPage.xaml.cs详细信息 public part

单击Xamarin.Forms应用程序中的
Register\u OnClicked
按钮,系统将抛出
system.NullReferenceException:对象引用未设置为对象的实例
此按钮将允许应用程序导航到系统保存数据的播放器注册详细信息屏幕。有人能告诉我错误的原因吗?我还不能找出错误的原因,已经重新启动了应用程序,执行了
clean build
操作,但仍然是一样的

数据库库使用:sqlite net pcl

//MainPage.xaml.cs详细信息

        public partial class MainPage : ContentPage
            {

                public MainPage()
                {
                    InitializeComponent();

                }


                public async void NavigateButton_OnClicked(object sender, EventArgs e)
                {
                    var tabbedPage = new TabbedPage();
                    tabbedPage.Children.Add(new Home("Welcome"+' '+emailEntry.Text+' '+",have a nice day!"));
                    tabbedPage.Children.Add(new Map());
                    tabbedPage.Children.Add(new Settings());
                    await Navigation.PushAsync(tabbedPage);
                }

                public async void Register_OnClicked(object sender, EventArgs e)
                {
                    await Navigation.PushAsync(new Register());
                }



            }
Register.xaml.cs details,其中保存播放器详细信息:

using SQLite;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
using System.Linq;

namespace soccerapp
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class Register : ContentPage
    {
        public SQLiteConnection conn;
        public Register()
        {
            InitializeComponent();
            conn = DependencyService.Get<Isqlite>().GetConnection();
            conn.CreateTable<PlayerDetails>();
        }

        public void RegisterSave_OnClicked(object sender, EventArgs e)
        {
            PlayerDetails playerDetails = new PlayerDetails();
            playerDetails.FullName = fullNameEntry.Text;
            playerDetails.Mobile = mobileEntry.Text;
            playerDetails.SoccerPosition = soccerpostionEntry.Text;
            playerDetails.Email = emailRegister.Text;
            playerDetails.Password = passwordEntry.Text;
            int x = 0;
            try
            {
                x = conn.Insert(playerDetails);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            if (x == 1)
            {
                DisplayAlert("Registration", "Player Registered Successfully", "Cancel");
            }
            else
            {
                DisplayAlert("Registration Failled!!!", "Please try again", "ERROR");
            }


        }
    }
}
下面调试>窗口>调用堆栈添加中的错误详细信息

    0xFFFFFFFFFFFFFFFF in System.Diagnostics.Debugger.Mono_UnhandledException_internal  C#
        0x1 in System.Diagnostics.Debugger.Mono_UnhandledException  C#
        0x20 in Android.Runtime.DynamicMethodNameCounter.43 C#
        0x12 in System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw    C#
        0x6 in System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.<ThrowAsync>b__6_0    C#
        0xC in Android.App.SyncContext. C#
        0xE in Java.Lang.Thread.RunnableImplementor.Run C#
        0xA in Java.Lang.IRunnableInvoker.n_Run C#
        0x11 in Android.Runtime.DynamicMethodNameCounter.43 C#
System.Diagnostics.Debugger.Mono\u UnhandledException\u内部C中的
0xFFFFFFFFFFFFFFFFFFFF#
System.Diagnostics.Debugger.Mono_未处理异常C中的0x1#
Android.Runtime.DynamicMethodNameCounter.43 C中的0x20#
System.Runtime.ExceptionServices.ExceptionDispatchInfo.C中的0x12#
System.Runtime.CompilerServices.AsyncMethodBuilderCore.c.b\u 6\u 0 c中的0x6#
Android.App.SyncContext中的0xC。C#
Java.Lang.Thread.RunnableImplementor.Run C中的0xE#
Java.Lang.IRunnableInvoker.n_中的0xA运行C#
Android.Runtime.DynamicMethodNameCounter.43 C中的0x11#

通过注册表页的构造函数和SqliteDroid类的GetConnection方法进行调试


当依赖注入失败时,我发现很难找到这样的错误。这可能是由于GetConnection中的错误,或者是因为您的DependencyService中没有注册SqliteDroid。

您需要查看堆栈跟踪以查找错误-这将告诉您错误发生的位置。如果从堆栈跟踪中看不到问题所在,那么将错误和堆栈跟踪添加到您的帖子中,以便其他人可以帮助您。否则,其他人很难“桌面检查”您的代码以了解问题所在!你的主页是导航页面吗?你是如何进入主页的?是的,主页是系统从中导航到注册页或主页的登录页。加载应用程序时,系统显示主页如果你的页面不包含在导航页中,导航属性将为空。此时我遇到错误
conn=DependencyService.get().GetConnection();在my Register.xaml.cso中,问题是DependencyService无法解析您的
Isqlite
接口,或者在
GetConnection()
中。在
GetConnection
和debug中设置断点。在更改为
[assembly:Xamarin.Forms.Dependency(typeof(SQliteDroid))]
后解决了错误,关于错误触发的提示非常棒。认可的
    0xFFFFFFFFFFFFFFFF in System.Diagnostics.Debugger.Mono_UnhandledException_internal  C#
        0x1 in System.Diagnostics.Debugger.Mono_UnhandledException  C#
        0x20 in Android.Runtime.DynamicMethodNameCounter.43 C#
        0x12 in System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw    C#
        0x6 in System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.<ThrowAsync>b__6_0    C#
        0xC in Android.App.SyncContext. C#
        0xE in Java.Lang.Thread.RunnableImplementor.Run C#
        0xA in Java.Lang.IRunnableInvoker.n_Run C#
        0x11 in Android.Runtime.DynamicMethodNameCounter.43 C#