下面是我正在检查所有强制CheckBox
在NEXT按钮上检查的代码。共有17个复选框。但是我在一个警告框中显示这个,所以它没有在View中采用这种布局,并在实际布局中计算了已检查项目的数量。请帮我解决这个问题。
public void showConfirmPopup()
{
final Dialog dialog = new Dialog(SubmitViewActivity.this);
dialog.setContentView(R.layout.activity_uikyc);
dialog.setCancelable(false);
Button back=(Button)dialog.findViewById(R.id.btn_bck);
Button next=(Button)dialog.findViewById(R.id.btn_next);
final CheckBox[] checkboxes;
checkboxes = new CheckBox[17];
for(int i=0;i < checkboxes.length; i++){
checkboxes[i] = (CheckBox) findViewById(getIdName("check_" + (i+1)));
}
back.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
dialog.cancel();
}
});
next.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
// TODO Auto-generated method stub
//int lenCheck = checkboxes.length;
int iCheck = 0;
for(int i=0;i<checkboxes.length;i++){
if(checkboxes[i].isChecked()){
iCheck++;
}
}
Log.e(String.valueOf(iCheck), "count of checked option");
if(iCheck != 17){
Toast.makeText(SubmitViewActivity.this, "Confirm all Checkboxes are checked" , Toast.LENGTH_LONG).show();
dialog.cancel();
}else if(iCheck == 17){
dialog.cancel();
savedetails = new SaveDetails();
savedetails.execute();
}
}
});
dialog.show();
}
答案 0 :(得分:1)
试试这个..
将xml中的CheckBox
ID更改为 check_1,check_2,check_3 ... check_17 ,如下所示每17
<CheckBox
android:id="@+id/check_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="check_1" />
和 java
在全局变量中明确为CheckBox[] checkboxs;
并按下面的方式启动它
checkboxs = new CheckBox[17];
for (int i = 0; i < checkboxs.length; i++) {
checkboxs[i] = (CheckBox) findViewById(getIdByName("check_" + (i + 1)));
}
getIdByName 方法
public static int getIdByName(final String name) {
try {
final Field field = R.id.class.getDeclaredField(name);
field.setAccessible(true);
return field.getInt(null);
} catch (Exception ignore) {
return -1;
}
}
您可以使用以下代码检查是否选中了复选框。
for (int i = 0; i < checkboxs.length; i++) {
if(checkboxs[i].isChecked()){
iCheck++;
}
}