You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin Form中如何将Picker选中值插入Firebase数据库?

解决Xamarin Forms中Picker选中值无法获取并存入Firebase的问题

问题根源

你在signButton_Clicked事件里犯了一个关键错误:事件的sender是触发点击的按钮,不是Picker控件,强行将sender转为Picker会得到null,后续调用SelectedItem.ToString()必然抛出空引用异常,导致无法获取选中值。

修正后的代码

直接使用XAML中已命名的entryField_SecurityQuestion实例来获取选中值,同时增加空值判断避免异常:

async public void signButton_Clicked(System.Object sender, System.EventArgs e)
{
    string firstName = entryField_Firstname.Text;
    string lastName = entryField_Lastname.Text;
    string contactNumber = entryField_PhoneNumber.Text;
    
    // 先判断Picker是否有选中项,避免空引用异常
    string securityQuestion = entryField_SecurityQuestion.SelectedItem?.ToString();
    
    // 可选:如果用户未选择安全问题,提示后直接返回
    if(string.IsNullOrEmpty(securityQuestion))
    {
        await DisplayAlert("提示", "请选择安全问题", "确定");
        return;
    }

    Customer customer = new Customer();
    customer.FirstName = firstName;
    customer.LastName = lastName;
    customer.SecurityQuestion = securityQuestion;
    customer.ContactNumber = contactNumber;
    
    var Savedata = await customerRepo.Save(customer);
}

额外注意事项

  • 确保XAML中的Picker命名entryField_SecurityQuestion和后台代码中的引用完全一致,大小写敏感。
  • 若Firebase保存仍失败,检查Customer类的属性是否和Firebase数据库的字段名匹配(注意大小写、字段类型)。
  • 建议将事件方法的返回类型改为async Task而非async void,async void仅适用于事件处理器,但使用async Task更便于错误捕获和调试。

内容的提问来源于stack exchange,提问作者HelloFriend

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 09:46:02