我是使用 Xamarin.Android 进行 Android 开发的新手,我想了解如何解决下一个问题。
有时,在从后台恢复我的 Android 应用程序后,我会遇到下一个错误:
应用程序 NavigationDrawerActivity 使用Unable to find the default constructor on type MainMenuFragment.
它MainMenuFragment
来允许用户在应用程序内的不同片段之间切换。
为了解决这个问题,我MainMenuFragment
在下面的链接中描述了一个默认构造函数:
- Xamarin 限制 - 2.1。缺少构造函数
-
public class MainMenuFragment : DialogFragment { readonly NavigationDrawerActivity navigationDrawer; #region Constructors public MainMenuFragment () {} // Default constructor... public MainMenuFragment (NavigationDrawerActivity navigationDrawer, IMenuType launchMenu = null) { if (navigationDrawer == null) throw new ArgumentNullException ("navigationDrawer"); this.navigationDrawer = navigationDrawer; ... Fragment UpdateTopFragmentForCurrentMenu (Fragment newMenuRootFragment = null) { Fragment currentMenuRootFragment = navigationDrawer.CurrentFragment; // issued line.
但是现在在未来的某个时候,MainMenuFragment
使用它的默认构造函数进行初始化,并且在它第一次尝试访问它的 navigationDrawer 时它会抛出一个System.NullReferenceException
:
System.NullReferenceException: Object reference not set to an instance of an object
at MainMenuFragment.UpdateTopFragmentForCurrentMenu (Android.App.Fragment) <0x00018>
at MainMenuFragment.OpenMenu (IMenuType,bool) <0x0006b>
at MainMenuFragment.OnCreate (Android.OS.Bundle) <0x00053>
at Android.App.Fragment.n_OnCreate_Landroid_os_Bundle_ (intptr,intptr,intptr) <0x0005b>
at (wrapper dynamic-method) object.3919a6ec-60c1-49fd-b101-86191363dc45 (intptr,intptr,intptr) <0x00043>
如何在不遇到此空引用异常的情况下实现默认构造函数?