我是Android新手。我想使用菜单中的复选框,用户触摸时必须选中该复选框。如果选中此复选框,则需要执行一些操作。现在,我有一个复选框,程序运行时已选中。

我设法在菜单中插入了复选框,并在应用程序启动时对其进行了检查,就像应该的那样。但是,当我尝试取消选中它时,程序崩溃。

Menu.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
        <item
            android:id="@+id/checkBox1"
            android:showAsAction="never"
            android:title="Allow Check"
            android:checkable="true"
            android:checked="true" />

        <item
            android:id="@+id/action_help"
            android:orderInCategory="100"
            android:showAsAction="never"
            android:title="Hai"/>

        <item
             android:id="@+id/checkBox2"
             android:showAsAction="never"
             android:title="Allow Check 2"
             android:checkable="true"
             android:checked="true" />
    </menu>


MainActivity.cs

    public override bool OnCreateOptionsMenu (IMenu menu)
    {
        base.OnCreateOptionsMenu (menu);
        MenuInflater inflater = this.MenuInflater;
        inflater.Inflate (Resource.Menu.menu, menu);
    return true;
            }

    public override bool OnOptionsItemSelected (Android.Views.IMenuItem item)
    {
        switch (item.ItemId) {
            case Resource.Id.action_help:
                return true;
            case Resource.Id.checkBox1:
                CheckBox check1 = (CheckBox)FindViewById (Resource.Id.checkBox1);
//Here the check1 come as null, which leads to the crash.
                if (check1.Checked == true)
                    check1.Checked = false;
                else
                    check1.Checked = true;
                check1.Click += check1_Click;
                return true;
            case Resource.Id.checkBox2:
                CheckBox check2 = (CheckBox)FindViewById (Resource.Id.checkBox2);
                if (check2.Checked == true)
                    check2.Checked = false;
                else
                    check2.Checked = true;
                check2.Click += check2_Click;
                return true;

                default:
                    return base.OnOptionsItemSelected (item);
                }
        }


尝试检索菜单中声明的​​复选框时,该复选框为null。我该如何工作?

最佳答案

请使用代码段,可能对您有帮助

public override bool OnOptionsItemSelected (Android.Views.IMenuItem item)
    {
        switch (item.ItemId) {
            case Resource.Id.action_help:
                return true;
            case Resource.Id.checkBox1:

                if (item.IsChecked)
                    item.SetChecked(false);
                else
                    item.SetChecked(true);
                item.Click += check1_Click;
                return true;
            case Resource.Id.checkBox2:

                if (item.IsChecked)
                    item.SetChecked(false);
                else
                    item.SetChecked(true);
                item.Click += check2_Click;
                return true;

                default:
                    return base.OnOptionsItemSelected (item);
                }
        }

10-05 17:49