Xamarin.Android を使用した Android 開発は初めてで、次の問題を修正する方法を知りたいです。
Android アプリケーションをバックグラウンドから復元した後、次のエラーに直面することがありました。
Unable to find the default constructor on type MainMenuFragment.
これMainMenuFragment
は、アプリケーション NavigationDrawerActivity によって使用され、ユーザーがアプリ内の異なるフラグメントを切り替えることができるようにします。
それを解決するために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>
この null 参照例外に直面せずにデフォルトのコンストラクターを実装するにはどうすればよいですか?