2013-04-11 2 views
-3

아무도 도와 줄 수 있습니까? 확인란을 동적으로 만들 수 없습니다. 그냥 때로는 프로그램을 사용하여 6 체크 박스를 만듭니다. 때로는 8 개의 확인란을 만듭니다. 각 체크 박스에 체크 할 때 이벤트를 체크하도록 설정하고 싶습니다. 다음과 같은 방법으로 오류가 발생합니다. 다른 메소드에 정의 된 내부 클래스 내부의 최종 변수가 아닌 변수를 참조 할 수 없습니다. "i의 변경자 "최후까지. mCheckTime은 긴 배열입니다. 콘텐츠 뷰가있는 LinearLayout 경우확인란을 동적으로 만들 수 없습니다.

 for(int i=0;i<optionsNum;i++){ 
      mCheckBox[i]=new CheckBox(this); 
      mCheckBox[i].setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener(){ 
       public void onCheckedChanged(CompoundButton buttonView, boolean isCheck){ 
        if (mCheckBox[i].isChecked()) { 
         mCheckTime[i] = System.currentTimeMillis(); 
        } 
       } 
      }; 
+0

위의 코드를 실행하면 어떻게 될 수 있습니까? – Pragnani

+0

정확히 무엇을 가지고있는 문제입니까? – Karakuri

+0

위의 코드 다음에'mCheckBox'로 무엇을합니까? –

답변

2

,

final CheckBox mCheckBox = new CheckBox(this); 
    mCheckBox 
      .setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener() { 
       public void onCheckedChanged(CompoundButton buttonView, 
         boolean isCheck) { 
        if (mCheckBox.isChecked()) { 
         mCheckBox.setText(System.currentTimeMillis() + ""); 
        } 
       } 
      }); 
    LayoutParams params = new LinearLayout.LayoutParams(
      LinearLayout.LayoutParams.WRAP_CONTENT, 
      LinearLayout.LayoutParams.WRAP_CONTENT); 
    addContentView(mCheckBox, params); 

가 ====== 편집 ======

또는이

LinearLayout layout = new LinearLayout(this); 
    layout.setOrientation(LinearLayout.VERTICAL); 
    setContentView(layout); 
    CheckBox[] mCheckBox = new CheckBox[6]; 
    for (int i = 0; i < 6; i++) { 
     mCheckBox[i] = new CheckBox(this); 
     mCheckBox[i].setText(i + ""); 
     mCheckBox[i] 
       .setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener() { 
        public void onCheckedChanged(CompoundButton buttonView, 
          boolean isCheck) { 
         if (isCheck) { 
          Toast.makeText(MainActivity.this, 
            System.currentTimeMillis() + "", 
            Toast.LENGTH_SHORT).show(); 
         } 
        } 
       }); 
     layout.addView(mCheckBox[i]); 
    } 
+0

예, 그는 그의 레이아웃에 체크 박스를 추가했습니다. + 1 – Pragnani

+0

감사합니다. 알았다. – unique

+0

질문을 해결하십시오 :-) – Celtic

0
을 시도하려고

고맙습니다. 최종 변수 j를 사용하여 내부 클래스 내부의 i를 대체합니다.

for(int i=0;i<optionsNum;i++){ 
     final int j = i; 
     mCheckBox[i]=new CheckBox(this); 
     mCheckBox[i].setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener(){ 
      public void onCheckedChanged(CompoundButton buttonView, boolean isCheck){ 
       if (mCheckBox[i].isChecked()) { 
        mCheckTime[i] = System.currentTimeMillis(); 
       } 
      } 
     }; 
관련 문제