如何保存并获取自定义复选框值

时间:2014-11-06 10:21:51

标签: android checkbox

我在对话框布局中自定义了复选框,您可以看到下面的代码。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingBottom="15dp"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:paddingTop="10dp">

    <CheckBox
        android:id="@+id/remember_choice"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginBottom="10dp"
        android:button="@drawable/checkbox_btn_holo_light"
        android:onClick="onCheckboxClicked"
        android:text="@string/remember_my_choice" />

</LinearLayout>

这给复选框一个checkbox_btn_holo_light样式。但问题是复选框无法保存并保持其isChecked()值。

为了捕获点击事件,我在xml中添加onclick标记,并根据official document添加onCheckboxClicked方法。请参阅下面的onCheckboxClicked方法。

public void onCheckboxClicked(View view) {
    isRememberChoiceChecked = ((CheckBox) view).isChecked();
}

更糟糕的是,当我运行项目时,单击复选框,应用程序崩溃了。 logcat中的错误如下所示。

java.lang.IllegalStateException: Could not find a method onCheckboxClicked(View) in the activity class com.seafile.seadroid2.AccountDetailActivity for onClick handler on view class android.widget.CheckBox with id 'remember_choice'

我想知道为什么会发生这种情况。

  • 那么可以在对话框布局上自定义复选框布局吗?
  • 如果可以自定义复选框(设置自定义背景),那么如何获取其检查状态?

我对此很困惑。任何建议将不胜感激。

2 个答案:

答案 0 :(得分:0)

从xml中删除此行

       android:onClick="onCheckboxClicked"

并在您的代码中,例如onCreate方法

       CheckBox chx = (CheckBox) view.findViewById(R.id.remember_choice);

然后你可以这样做:

              chx.setOnCheckedChangeListener(new OnCheckedChangeListener() {

                    @Override
                    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                        // here you have your ischecked value do your job
                        // this will fire every time checbox is clicked
                    }
                });

答案 1 :(得分:0)

按钮checkboxbtn; CheckBox none;

none =(CheckBox)rootView.findViewById(R.id.chknone);

checkboxbtn.setOnClickListener(new View.OnClickListener(){

        public void onClick(View v) {
            // TODO Auto-generated method stub

            if ((none.isChecked() == true)) {
                // String strnone = null;
                strnone = "none";
                Log.e("none", strnone);
            }

    });