没有任何额外的解释我只想以编程方式将我的Checkbox设置为相同的onClick
,这是我的代码:
<CheckBox
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="func"
android:text="1"
android:id="@+id/c1"/>
<CheckBox
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="2"
android:onClick="func"
android:id="@+id/c2"/>
<CheckBox
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="3"
android:onClick="func"
android:id="@+id/c3"/>
public void func(View view) {
// Is the view now checked?
CheckBox checkBox1 = (CheckBox)findViewById(R.id.c1);
CheckBox checkBox2 = (CheckBox)findViewById(R.id.c2);
CheckBox checkBox3 = (CheckBox)findViewById(R.id.c3);
if(checkBox1.isChecked() && checkBox2.isChecked() && (!checkBox3.isChecked()))
{
Next = true;
}
else
{
Next = false;
}
}
但是我想要一种程序化的方法。
我正在寻找类似的方式:
CheckBox checkBox1 = new CheckBox(context);
CheckBox checkBox2 = new CheckBox(context);
CheckBox checkBox3 = new CheckBox(context);
checkbox1.setOnclick(//TheFunction);
checkbox2.setOnClick(//TheFunction);
checkbox3.setOnClick(//TheFunction);
TheFunction
与我之前代码中的func
相同。
换句话说,我希望在点击任何复选框时调用一个独特的函数。
答案 0 :(得分:1)
尝试使用此复选框
将相同的android:onClick="onCheckboxClicked"
方法添加到所有复选框中,如下方复选框
<CheckBox
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="onCheckboxClicked"
android:text="1"
android:id="@+id/c1"/>
<CheckBox
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="2"
android:onClick="onCheckboxClicked"
android:id="@+id/c2"/>
<CheckBox
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="3"
android:onClick="onCheckboxClicked"
android:id="@+id/c3"/>
现在在您的活动文件中创建一个 onCheckboxClicked
的方法,如下所示
public void onCheckboxClicked(View view) {
// now check that Is the view now checked?
boolean checked = ((CheckBox) view).isChecked();
// Check which checkbox was clicked
switch(view.getId()) {
case c1:
if (checked)
// c1 is cheked
else
// c1 is uncheked
break;
case c2:
if (checked)
// c2: is cheked
else
// c2: is ubcheked
break;
}
}
试试这个
chkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
if(isChecked){
fun();
}
}
}
);
答案 1 :(得分:0)
您可以将 onClickListner 设置为复选框,就像这样
checkBox1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
CheckBox cb = (CheckBox) view;
if(cb.isChecked()){
}else{
}
}
});
答案 2 :(得分:0)
您可以使用
checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
checkbox1.setOnClickListener(//函数);
checkbox2.setOnClickListener(//函数);
checkbox3.setOnClickListener(//函数);
答案 3 :(得分:0)
如果您不想一次又一次地重复相同的onClickListener代码,请创建此方法
private void setOnMyViewClick(View myView)
{
if(myView!= null)
{
myView.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
try
{
myViewClick(v, v.getResources().getResourceEntryName(v.getId()));
}
catch (Exception e)
{
}
}
});
}
}
创建一个处理点击的方法
private void myViewClick(View view, String viewName) throws Exception
{
}
并为任何复选框或任何其他视图注册onclick
setOnMyViewClick(checkbox1);
答案 4 :(得分:0)
:
public void onCheckboxClicked(View view) {
try {
if ((view == c1) || (view == c2) || (view == c3)) {
// You can perform a common action for all check box clicks here
}
} catch (Exception e) {
e.printStackTrace();
Log.e("onClick", e + "");
}
}
}
如果你想为每个复选框做不同的事件,你应该像Nilesh Rathod
回答一样。