我在访问其他视图中的数据时遇到了一个小问题,所以这里是代码。
按钮
Button button2 = FindViewById<Button>(Resource.Id.addExpereince);
按钮单击
button2.Click += (sender, e) =>{
EditText addCompany = FindViewById<EditText>(Resource.Id.addCompanyName);
EditText addDate = FindViewById<EditText>(Resource.Id.addDate);
EditText addPosition = FindViewById<EditText>(Resource.Id.addPosition);
AddExpreince(1, addCompany.Text, addPosition.Text, addDate.Text);
SetContentView(Resource.Layout.Main);
};
我想学习,如何解决这个问题。按钮和EditText在其他视图上,我实际上不需要它们在主视图中工作,我只需要在MainActivity中初始化代码,以便它们可以在另一个视图中使用。
我收到的错误是为了更好的参考:
System.NullReferenceException: Object reference not set to an instance of an object.
答案 0 :(得分:1)
System.NullReferenceException:未将对象引用设置为对象的实例。
根据文档
,您应首先使用SetContentView()
从布局资源设置活动内容。资源将被夸大,将所有顶级视图添加到活动中。
如果您没有首先向Activity
添加布局,您的Activity
基本上是一个空窗口。因此,当您使用FindViewById
方法时,您将获得NullReferenceException
例外。
像这样修改你的代码:
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
// Get our button from the layout resource,
// and attach an event to it
Button button2 = FindViewById<Button>(Resource.Id.addExpereince);
EditText addCompany = FindViewById<EditText>(Resource.Id.addCompanyName);
EditText addDate = FindViewById<EditText>(Resource.Id.addDate);
EditText addPosition = FindViewById<EditText>(Resource.Id.addPosition);
button2.Click += (sender, e) =>
{
AddExpreince(1, addCompany.Text, addPosition.Text, addDate.Text);
};
}