我有一个警告对话框,弹出并通过复选框为用户提供多种选择,以及用户输入一些文本的编辑文本。自定义警报对话框从布局中膨胀,到目前为止一切都很好。
我的问题是尝试处理复选框的点击事件。我一直得到空引用异常,我无法解决我出错的地方。我曾尝试用各种时尚编写代码,我想我现在只是对这个问题视而不见了。
我需要查看是否选中了复选框并将结果分配给我的bools。
在尝试处理点击事件时,会抛出异常。任何帮助表示感谢,谢谢。
var myCustomAlert = LayoutInflater.Inflate(Resource.Layout.delegateCaptureAlertLayout, null);
bool wantphoneCall = true;
bool wantBrochure = false;
bool wantMailingList = false;
string additionalText;
AlertDialog.Builder builder;
builder = new AlertDialog.Builder(this);
builder.SetTitle("Your request");
builder.SetView(myCustomAlert);
builder.SetMessage("Some message");
builder.SetPositiveButton("OK", delegate { // do something
});
builder.Show ();
CheckBox checkCallMe = FindViewById<CheckBox> (Resource.Id.checkBoxCallMe);
CheckBox checkBrochure = FindViewById<CheckBox> (Resource.Id.checkBoxBrochure);
CheckBox checkMailingList = FindViewById<CheckBox> (Resource.Id.checkBoxMailing);
EditText additionalInfoText = FindViewById<EditText> (Resource.Id.textAdditionalInfo);
checkCallMe.Click += (sender, e) => { // exception thrown here
Console.WriteLine("Checkbox is clicked");
if (checkCallMe.Checked)
{
wantphoneCall = true;
Console.WriteLine("Checkbox is checked");
}
else
{
wantphoneCall = false;
Console.WriteLine("Checkbox is not checked");
}
答案 0 :(得分:1)
您调用FindViewById()
的方式是使其在Activity的布局中搜索CheckBox对象,但它们存在于未搜索的对话框中。如果在该部分中设置断点,则会发现CheckBox对象都是null
,因此在尝试附加事件处理程序时会出现异常。
在对话框的虚增视图上调用FindViewById()
:
CheckBox checkCallMe = myCustomAlert.FindViewById<CheckBox> (Resource.Id.checkBoxCallMe);