c# – 当调用IntPtr构造函数时,Xamarin Android会执行OnCreateVi
发布时间:2020-12-15 17:14:15 所属栏目:百科 来源:网络整理
导读:我知道Xamarin Android中的构造函数难度,如下所述: No constructor found for … (System.IntPtr,Android.Runtime.JniHandleOwnership) 以及所有碎片和活动我在app中创建的其他自定义视图导入此构造函数. 但有时会在OnCreateView方法中抛出空引用异常. 例:
我知道Xamarin
Android中的构造函数难度,如下所述:
No constructor found for … (System.IntPtr,Android.Runtime.JniHandleOwnership) 以及所有碎片和活动&我在app中创建的其他自定义视图导入此构造函数. 但有时会在OnCreateView方法中抛出空引用异常. public class TestView: Android.Support.V4.App.Fragment{ public TestClass _testClass; public TestView (TestClass testClass) { this._testClass = testClass; } public TestView(IntPtr javaReference,Android.Runtime.JniHandleOwnership transfer) : base(javaReference,transfer) { } public override Android.Views.View OnCreateView (Android.Views.LayoutInflater inflater,Android.Views.ViewGroup container,Android.OS.Bundle savedInstanceState) { View view = inflater.Inflate (Resource.Layout.Fragment_TestView,container,false); _testClass.ExecuteTestMethod(); return view; } } 这段代码在OnCreateView中抛出了一个空引用异常,偶尔会出现这种情况.这很少发生,从来没有直接从代码创建视图然后测试它. 现在很明显,此代码中唯一可以抛出异常的点是_testClass变量. 解决方法
即使在Java中,onCreateView也可以在构造函数不可用的情况下调用,这就是片段生命周期的工作原理:
在添加Fragment之前调用构造函数,但实例变量_testClass并不总是设置,因为Android在恢复时会调用默认构造函数.我猜你在旋转设备(连续三次?)和/或当你去另一个应用程序然后回来时你的崩溃正在发生 您需要通过持久化使用onSaveInstanceState创建TestClass实例所需的参数(Bundle支持的基本数据类型)来管理它,然后使用它们在onResume中创建TestClass的实例 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- React Native填坑之旅--Flow篇(番外)
- ruby-on-rails – 对于Rails应用程序,我应该在数据库和模型
- ruby – 如何在带有流浪汉1.7.2的Windows 7 x64上流浪(用pu
- c# – Lambda Func <>和Fluent
- c – 在生产环境中使用PGO(配置文件引导优化)的风险
- ruby-on-rails – 通过脚手架生成的控制器上的空(但工作)sh
- c# – Request.ServerVariables [“LOGON_USER”]与Request
- react的context更新而组件不更新的解决方案
- 正则表达式语法
- 无法将Heroku应用程序升级到ruby 2.1.3