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
相关产品推荐
相关产品推荐

