c# - 在 Xamarin 中导航到本机表单会产生空引用异常
问题描述
我在 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>
当我调试更多片段的视图始终为空时,我怀疑这是导致问题的原因,但不确定..请帮助..
解决方案
我预计会出现此问题,因为您使用的是应用程序Context
而不是活动Context
。在大多数情况下,它作为上下文提供者很好,但有时它会导致问题。
我不确定您的项目结构是否会推荐如何获取活动上下文的最佳解决方案,但 CurrentActivity 插件应该适用于所有情况。
推荐阅读
- javascript - 如何在 ReactJS 中更新对象的 setstate
- javascript - d3 在 Firefox 中缩放 NaN
- swift - 显示没有 UIImage 的 base64 编码图像
- matlab - 如何在 plot3 中使用渐进式着色?
- entity-framework-core - 1 对多,以复合键为主键
- node.js - 如何确定与本地服务器日期和数据库日期的时区偏移
- java - InputStream xls文件无法解码
- javascript - 饼图的每个部分在chartsjs中随机颜色
- c++ - 对(我认为是)不可复制元素的列表进行分区
- c# - 将 XDocument.Descendants 与合并运算符一起使用??和可为空的类型