我正在尝试为Click事件声明ImageButton
,但会给出错误。
什么会给出这个错误?
(btnSettingsBack.Click += btnSettingsBack_Click;
MainActivity Code(OnCreate):
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布局代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#fff"
android:minWidth="25px"
android:minHeight="25px">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="80dp"
android:id="@+id/linearLayout1"
android:padding="20px"
android:background="#22A7F0">
<ImageButton
android:src="@drawable/menu_back"
android:background="#22A7F0"
android:layout_weight="0.6"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="30px"
android:id="@+id/btnSettingsBack"
android:layout_gravity="center" />
更新2: OnCreate代码
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;
}
答案 0 :(得分:1)
您将活动的contentView设置为名为 Main.axml
的文件SetContentView(Resource.Layout.Main);
但您在另一个名为 Settings.axml
的文件中定义了ImageButton
这就是为什么btnSettingsBack
为空并因此错误。
这些控件中的每一个都必须存在于您设置为页面的ContentView的布局中。如果其中任何一个不存在,则在尝试访问它时会出现NullReferenceException。
ImageButton btnSettings = FindViewById<ImageButton>(Resource.Id.btnSettings);
ImageButton btnSettingsBack = FindViewById<ImageButton>(Resource.Id.btnSettingsBack);
btnAdd = FindViewById<Button>(Resource.Id.btnAdd);
将FindViewById
视为使用您传递的ResourceId查询您为Activity提供的布局的一种方式。如果ID不存在,则此方法不会投诉,但它将返回Null,因此我们的工作是确保您传递的每个Id都是您正在设置的布局的一部分。