C# 声明按钮单击时出错-Android C Xamarin

C# 声明按钮单击时出错-Android C Xamarin,c#,android,xamarin,error-handling,click,C#,Android,Xamarin,Error Handling,Click,我试图为Click事件声明ImageButton,但出现了一个错误。 什么会导致这个错误 btnSettingsBack上发生错误。单击+=btnSettingsBack\u单击 创建时的主要活动代码: ImageButton btnSettings = FindViewById<ImageButton>(Resource.Id.btnSettings); ImageButton btnSettingsBack = FindViewById<ImageButto

我试图为Click事件声明ImageButton,但出现了一个错误。 什么会导致这个错误

btnSettingsBack上发生错误。单击+=btnSettingsBack\u单击

创建时的主要活动代码:

    ImageButton btnSettings = FindViewById<ImageButton>(Resource.Id.btnSettings);
    ImageButton btnSettingsBack = FindViewById<ImageButton>(Resource.Id.btnSettingsBack);
    btnAdd = FindViewById<Button>(Resource.Id.btnAdd);
    lvNotes = FindViewById<ListView>(Resource.Id.lvNotes);
   dbHelper = new DbHelper(this);

    //Load Data
    LoadNoteList();

    btnAdd.Click += BtnAdd_Click;

    btnSettings.Click += BtnSettings_Click;

    btnSettingsBack.Click += BtnSettingsBack_Click;

}
错误:

更新1:Settings.axml布局代码:

更新2:OnCreate代码


您正在将名为Main.axml的文件设置为活动的contentView

但是您在另一个名为Settings.axml的文件中定义了ImageButton

这就是为什么is btnSettingsBack为null,因此出现错误

这些控件中的每一个都必须存在于设置为页面内容视图的布局中。如果其中任何一个不存在,那么在尝试访问它时,您将有一个NullReferenceException

ImageButton btnSettings = FindViewById<ImageButton>(Resource.Id.btnSettings);
ImageButton btnSettingsBack = FindViewById<ImageButton>(Resource.Id.btnSettingsBack);
btnAdd = FindViewById<Button>(Resource.Id.btnAdd);

将FindViewById视为一种使用您传递的ResourceId查询您提供给活动的布局的方法。如果Id不存在,此方法将不会出现问题,但它将返回Null,因此我们的工作是确保您传递的每个Id都是您正在设置的布局的一部分。

确保布局中存在btnSettingsBack,并将其声明为ImageButton。它位于我的axml布局中,并声明为ImageButton,请参阅更新2中的更新1使用完整的OnCreate方法OnCreate代码进行更新,虽然我不认为这会对第一个代码产生影响,但我如何定义ImageButton并从Main活动中声明单击事件?复制您在Settings.axml文件中定义的关于id为BTNSettingsBack的ImageButton的代码,上面的标签设置.axml代码您无法访问或定义除当前布局之外的其他布局中的对象/控件的单击事件。这表示从活动中,您无法访问位于Settings.axml中的ImageButton btnSettingsBack。那么如何使用ImageButton click事件?
protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);
            ActionBar.Hide();



            ImageButton btnSettings = FindViewById<ImageButton>(Resource.Id.btnSettings);
            ImageButton btnSettingsBack = FindViewById<ImageButton>(Resource.Id.btnSettingsBack);
            btnAdd = FindViewById<Button>(Resource.Id.btnAdd);
            lvNotes = FindViewById<ListView>(Resource.Id.lvNotes);
           dbHelper = new DbHelper(this);

            //Load Data
            LoadNoteList();

            btnAdd.Click += BtnAdd_Click;

            btnSettings.Click += BtnSettings_Click;

            btnSettingsBack.Click += BtnSettingsBack_Click;

        }
SetContentView(Resource.Layout.Main);
ImageButton btnSettings = FindViewById<ImageButton>(Resource.Id.btnSettings);
ImageButton btnSettingsBack = FindViewById<ImageButton>(Resource.Id.btnSettingsBack);
btnAdd = FindViewById<Button>(Resource.Id.btnAdd);