Xamarin 访问其他视图上的数据

Xamarin Access Data on Other Views

我在访问其他视图中的数据时遇到了一个小问题,所以这是代码。

按钮

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);

        };

我想学习如何解决这个问题。 button和EditText在其他view上,其实我不需要它们在主view中工作,我只需要在MainActivity中初始化代码,这样它们就可以在其他view中使用了。

为了更好地参考我收到的错误:

System.NullReferenceException: Object reference not set to an instance of an object.

System.NullReferenceException: Object reference not set to an instance of an object.

您应该先使用 SetContentView(),根据文档:

Set the activity content from a layout resource. The resource will be inflated, adding all top-level views to the activity.

如果您没有先向 Activity 添加布局,您的 Activity 基本上是空的 window。因此,当您使用 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);
    };
}