2014-04-01 109 views
1

下面是我在檢查所有必需的代碼CheckBox是在NEXT按鈕上被選中。共有17個複選框。但是我在Alert框中顯示了這一點,所以它沒有在View中採用這種佈局,並且在實際佈局中採用了檢查項目的數量。請幫我解決這個問題。如何檢查所有的CheckBox是否在按鈕上檢查點擊在Android

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(); 

} 
+1

什麼是'checked'? 「checkboxes」定義在哪裏?你有檢查改變了聽者?更多信息將會有所幫助。 –

+0

在哪裏定義了「checked」,你如何設置它的值 – EdmDroid

+0

@AmulyaKhare否我使用任何已檢查的已更改的偵聽器。我剛在佈局中使用了17複選框 – Manju

回答

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

Declear as CheckBox[] checkboxs; in global variable and用來初始化它像法

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; 
    } 
} 

下面

checkboxs = new CheckBox[17]; 

    for (int i = 0; i < checkboxs.length; i++) { 
     checkboxs[i] = (CheckBox) findViewById(getIdByName("check_" + (i + 1))); 
    } 

getIdByName,你可以檢查被檢查或不使用下面的代碼wheather複選框。

for (int i = 0; i < checkboxs.length; i++) { 

     if(checkboxs[i].isChecked()){ 
       iCheck++; 
     } 
    } 
+0

嗨它投擲if(複選框[i] .isChecked()){} – Manju

+0

@Manju什麼正在投擲。 – Hariharan

+0

空指針異常也不能解決複選框的價值[我]當我調試 – Manju

相關問題