C# 声明按钮单击时出错-Android C Xamarin
我试图为Click事件声明ImageButton,但出现了一个错误。 什么会导致这个错误 btnSettingsBack上发生错误。单击+=btnSettingsBack\u单击 创建时的主要活动代码: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
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);