2014-02-15 3 views
0

대화 상자 환경 설정에서 사용하고있는 사용자 정의 레이아웃이 있는데, 대화 상자에 잘 나타납니다. 그러나 문제는 레이아웃에서 확인란을 선택했는지 확인하는 것입니다. 그들이 예상대로 행동하게하십시오. 다음은 내 DialogPreferences.java 클래스의 코드입니다 :사용자 정의 레이아웃에서 대화 환경 설정 사용하기

@Override 
protected void onDialogClosed(boolean positiveResult) { 
    LayoutInflater inflater = ((Activity)getContext()).getLayoutInflater(); 
    View view = inflater.inflate(R.layout.imagechoice, null); 
    button1 = (CheckBox)view.findViewById(R.id.background1); 
    button2 = (CheckBox)view.findViewById(R.id.background2); 
    button3 = (CheckBox)view.findViewById(R.id.background3); 
    button4 = (CheckBox)view.findViewById(R.id.background4); 

    button1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) { 
      selected=1; 
      button2.setChecked(false); 
      button3.setChecked(false); 
      button4.setChecked(false); 
     } 
    }); 
    button2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) { 
      selected=2; 
      button1.setChecked(false); 
      button3.setChecked(false); 
      button4.setChecked(false); 
     } 
    }); 
    if(positiveResult){ 
     Log.d("BACKGROUND onDialogClosed", Integer.toString(selected)); 
     persistInt(selected); 
    } 

    super.onDialogClosed(positiveResult); //To change body of overridden methods use File | Settings | File Templates. 
} 

응용 프로그램이 실행되고 난 로그가 열려, 내가 첫 번째 또는 두 번째 검사를 선택 시도하고 난 항상 로그 문에 의해 인쇄 된 값 0을 참조 선택한 변수가 예상대로 업데이트되지 않음을 나타냅니다. 체크 상자 코드를

public DialogPreferences(Context oContext, AttributeSet attrs) 
{...} 

메서드에 넣으려고했는데 같은 결과가 나타났습니다. 이 파일의 어느 메소드에서 체크 박스가 체크되었을 때 어떤 일을하기 위해 필요한 코드를 넣을 적절한 장소입니까?

답변

0

onCreateDialogView를 덮어 쓰고 거기에 onCheckChangeListeners를 추가해야합니다. 현재 문제는 onDialogClosed가 호출 될 때 청취중인 것입니다.

+0

더 이해하기 쉽습니다. 이전에 경험했던 것과 동일한 결과를 얻었지만 기대했던 결과는 아닙니다. – ez4nick

관련 문제