我在对话框布局中自定义了复选框,您可以看到下面的代码。
<?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'
我想知道为什么会发生这种情况。
我对此很困惑。任何建议将不胜感激。
答案 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);
}
});