【问题标题】:Unhandled Exception Error (Xaramin Android) [duplicate]未处理的异常错误(Xaramin Android)[重复]
【发布时间】:2018-02-09 07:45:18
【问题描述】:

我不断收到此错误,我不知道如何修复它。谁能帮我? (编程入门/Xaramin) PS:mBtnSignUp.Click += .... 代码确实有效 + 显示了对话框,但 SignIn 没有,虽然它是相同的代码 + 代码 id 也是正确的。

错误: System.NullReferenceException:对象引用未设置为对象的实例。

给出错误的部分代码:

mBtnSignIn.Click += (object sender, EventArgs args) =>
        {
            //Dialog opvragen
            FragmentTransaction transaction = FragmentManager.BeginTransaction();
            dialog_SignIn signInDialog = new dialog_SignIn();
            signInDialog.Show(transaction, "Dialog fragment");

            signInDialog.mOnSignInComplete += SignInDialog_mOnSignInComplete;
        };

完整代码:

protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

            mBtnSignUp = FindViewById<Button>(Resource.Id.btnRegistreren);
            mBtnSignIn = FindViewById<Button>(Resource.Id.btnInloggen);
            mProgressBar = FindViewById<ProgressBar>(Resource.Id.progressBar1);

            mBtnSignIn.Click += (object sender, EventArgs args) =>
            {
                //Dialog opvragen
                FragmentTransaction transaction = FragmentManager.BeginTransaction();
                dialog_SignIn signInDialog = new dialog_SignIn();
                signInDialog.Show(transaction, "Dialog fragment");

                signInDialog.mOnSignInComplete += SignInDialog_mOnSignInComplete;
            };

            mBtnSignUp.Click += (object sender, EventArgs args) =>
            {
                //Dialog opvragen
                FragmentTransaction transaction = FragmentManager.BeginTransaction();
                dialog_SignUp signUpDialog = new dialog_SignUp();
                signUpDialog.Show(transaction, "Dialog fragment");

                signUpDialog.mOnSignUpComplete += SignUpDialog_mOnSignUpComplete;
            };
        }

        void SignInDialog_mOnSignInComplete(object sender, OnSignInEventArgs e) //Inloggen
        {
            mProgressBar.Visibility = ViewStates.Invisible;
            Thread thread = new Thread(ActLikeARequest);
            thread.Start();
        }

        void SignUpDialog_mOnSignUpComplete(object sender, OnSignUpEventArgs e) //Registreren
        {

            mProgressBar.Visibility = ViewStates.Invisible;
            Thread thread = new Thread(ActLikeARequest);
            thread.Start();
        }

        private void ActLikeARequest()
        {
            Thread.Sleep(3000);

            RunOnUiThread(() => { mProgressBar.Visibility = ViewStates.Invisible; });
        }

希望我的问题可以理解。

提前致谢!

【问题讨论】:

  • 我知道.. 但是因为我没有太多经验,所以我真的无法在我的代码中找到错误的行.. 这就是我提出这个问题的原因
  • 您是否尝试过在代码运行时对其进行调试?它可以让您最清楚地了解抛出异常的位置,从而引导您修复错误。
  • 我没试过。感谢您的提示!

标签: c# android visual-studio


【解决方案1】:

当发生未处理的错误时,您可以通过按继续并查看输出窗口来梳理错误和代码行。

这里通常会发生很多事情,但如果你仔细观察,如果你正在运行模拟器或对设备使用远程调试,它会为你提供线索和行号

另一种方法是将有问题的代码包装在 try catch 中,并在异常处断点并查看堆栈跟踪

try
{
    // code
}
catch(Exception ex)
{  // << break point here

}

此外,在生产中,您可以使用 HockeyApp 来监控崩溃

其他资源

Using Breakpoints

How to integrate HockeyApp with Xamarin

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    • 2014-06-24
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多