在Xamarin中对表单进行本地导航会产生空引用异常

问题描述 投票:5回答:2

我在Xamarin.Android项目中有4个标签页(本机)。本机加载了3个标签,但是我要加载的一个标签是“表单”页面(内容页面)。这是制表符的代码-

    public override Android.Support.V4.App.Fragment GetItem(int position)
        {

            switch (position)
            {
                case 0:
                    return new tab1Fragment();

                case 1:
                    return new tab2Fragment();

                case 2:
                    return new tab3Fragment();                   

                case 3:
                   var fragment = new FormsPage1().CreateSupportFragment(Android.App.Application.Context);
                    return fragment;

                default:
                    return null;
            }
        }

表单页面已成功加载,但是当我触摸该页面中的任何地方时,它都崩溃了。这是例外-

System.NullReferenceException: Object reference not set to an instance of an object.
at Android.Views.View.n_DispatchTouchEvent_Landroid_view_MotionEvent_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_e)
  at (wrapper dynamic-method) System.Object.55(intptr,intptr,intptr)
 Unhandled Exception from source=AndroidEnvironment
 System.NullReferenceException: Object reference not set to an instance of an object.
  at Xamarin.Forms.Platform.Android.PlatformRenderer.DispatchTouchEvent (Android.Views.MotionEvent e) 
at Android.Views.View.n_DispatchTouchEvent_Landroid_view_MotionEvent_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_e)

更新Xaml-

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:local="clr-namespace:ClientApp"
         x:Class="ClientApp.FormsPage1">

<StackLayout>
    <!-- Place new controls here -->
    <Label Text="Welcome to Xamarin.Forms!" 
       HorizontalOptions="Center"
       VerticalOptions="CenterAndExpand" />
</StackLayout>

[当我进行更多调试时,该片段的视图始终为空,我怀疑这是导致问题的原因,但不确定..请帮助..

c# xamarin xamarin.forms xamarin.android
2个回答
5
投票

我希望出现此问题,因为您使用的是应用程序的Context,而不是活动Context。在大多数情况下,作为上下文提供程序很好,但是有时会引起问题。

我不确定您的项目结构会建议如何获得活动上下文的最佳解决方案,但CurrentActivity插件在所有情况下均应正常工作。


2
投票

用户Xamarin.Forms.Forms.Init(this,null);在您创建片段之前的代码中

© www.soinside.com 2019 - 2024. All rights reserved.