如何检查 android 复选框是不是在其 onClick 方法中被选中(在 XML 中声明)?

Posted

技术标签:

【中文标题】如何检查 android 复选框是不是在其 onClick 方法中被选中(在 XML 中声明)?【英文标题】:How to check if android checkbox is checked within its onClick method (declared in XML)?如何检查 android 复选框是否在其 onClick 方法中被选中(在 XML 中声明)? 【发布时间】:2013-08-22 13:39:38 【问题描述】:

我在 android 中有一个复选框,其中包含以下 XML:

<CheckBox
   android:id="@+id/item_check"
   android:layout_
   android:layout_
   android:onClick="itemClicked" />

这是我的 Activity 类中的 onClick() 方法。

public void itemClicked(View v) 
  //code to check if this checkbox is checked!

我知道我们可以创建一个复选框对象并为其分配 id。但是通过 XML 声明 onClick 方法时有没有更好的方法来实现该功能?

【问题讨论】:

((CheckBox)v).isChecked(); 【参考方案1】:

试试这个:

public void itemClicked(View v) 
  //code to check if this checkbox is checked!
  CheckBox checkBox = (CheckBox)v;
  if(checkBox.isChecked())

  

【讨论】:

【参考方案2】:

这样就可以了:

  public void itemClicked(View v) 
    if (((CheckBox) v).isChecked()) 
        Toast.makeText(MyAndroidAppActivity.this,
           "Checked", Toast.LENGTH_LONG).show();
    
  

【讨论】:

【参考方案3】:
<CheckBox
      android:id="@+id/checkBox1"
      android:layout_
      android:layout_
      android:text="Fees Paid Rs100:"
      android:textColor="#276ca4"
      android:checked="false"
      android:onClick="checkbox_clicked" />

这里的主要活动

   public class RegistA extends Activity 
CheckBox fee_checkbox;
 @Override
    protected void onCreate(Bundle savedInstanceState) 
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_regist);
 fee_checkbox = (CheckBox)findViewById(R.id.checkBox1);// Fee Payment Check box

复选框被点击

     public void checkbox_clicked(View v)
     

         if(fee_checkbox.isChecked())
         
            // true,do the task 

         
         else
         

         

     

【讨论】:

【参考方案4】:

你可以试试这个代码:

public void itemClicked(View v) 
 //code to check if this checkbox is checked!
 if(((CheckBox)v).isChecked())
   // code inside if
 

【讨论】:

【参考方案5】:
@BindView(R.id.checkbox_id) // if you are using Butterknife
CheckBox yourCheckBox;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.your_activity); 
    yourCheckBox = (CheckBox)findViewById(R.id.checkbox_id);// If your are not using Butterknife (the traditional way)

    yourCheckBox.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View v) 
            yourObject.setYourProperty(yourCheckBox.isChecked()); //yourCheckBox.isChecked() is the method to know if the checkBox is checked
            Log.d(TAG, "onClick: yourCheckBox = " + yourObject.getYourProperty() );
        
    );

显然,您必须使用复选框的 id 来制作 XML:

<CheckBox
    android:id="@+id/checkbox_id"
    android:layout_
    android:layout_
    android:text="Your label"
    />

所以,判断复选框是否被选中的方法是:(CheckBox) yourCheckBox.isChecked() 如果复选框被选中,则返回true

【讨论】:

以上是关于如何检查 android 复选框是不是在其 onClick 方法中被选中(在 XML 中声明)?的主要内容,如果未能解决你的问题,请参考以下文章

Android - 如何检查是不是启用了开发人员选项

如何使用 Ajax、PHP 和 JQuery 检查多个输入复选框?

如何检查刷新控件是不是在其目标操作方法中刷新

使用android中的自定义arrayadapter在listview中使用复选框检查后如何删除多个项目?

如何检查复选框是不是被选中?

如何检查是不是选中了复选框[重复]