2014-04-30 2 views
0

아래의 간단한 활동에 문제가 있습니다. 이 액티비티에서 내 체크 박스의 상태를 정의하는 전역 변수가 있습니다. 변수 = 0이면 체크 박스는 체크되지 않습니다. 그렇지 않으면 = 1이고 체크 박스가 체크됩니다. 내가 활동을 시작할 때 그 전역 변수의 값에 따라 체크 박스 상태를 체크해야한다. 문제는 여기에 있습니다 : on.setChecked없이Android setChecked (true) 충돌 앱

if(o == 1){ 
     on.setChecked(true); 
     czas.setEnabled(true);    
} 

은 (참) 모든 것이 잘 작동합니다. 그러나 활동 시작시 확인란을 true로 설정하면 앱이 다운됩니다. 활동의

코드 :

public class Ustawienia extends Activity { 

SeekBar czas; 
CheckBox on; 
EditText sekundy; 

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.ustawienia); 
     final Globalne globalVariable = (Globalne) getApplicationContext(); 
     sekundy = (EditText) findViewById(R.id.editText1); 
     sekundy.setText("0"); 
     czas = (SeekBar) findViewById(R.id.seekBar1); 
     int o = globalVariable.getOdswiez();    

     if(o == 1){ 
      on.setChecked(true); 
      czas.setEnabled(true);    
     } 

     czas.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 

      @Override 
      public void onProgressChanged(SeekBar seekBar, int progress, 
        boolean fromUser) { 
       sekundy.setText(Integer.toString(progress)); 

      } 

      @Override 
      public void onStartTrackingTouch(SeekBar seekBar) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onStopTrackingTouch(SeekBar seekBar) { 
       // TODO Auto-generated method stub 

      } 
     }); 
     on = (CheckBox) findViewById(R.id.checkBox1); 
     on.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       if (isChecked){ 
        czas.setEnabled(true); 
        globalVariable.setOdswiez(1); 
       }else{ 
        czas.setEnabled(false); 
        globalVariable.setOdswiez(0); 

       } 

      } 
     }); 



} 

}

+3

사소한. 'on'은 결코 초기화되지 않습니다. (오타로 닫히기위한 표시) – njzk2

답변

2

가이

on = (CheckBox) findViewById(R.id.checkBox1); 

를 초기화해야 위의

if(o == 1){ 
     on.setChecked(true); 
     czas.setEnabled(true);    
} 

로보기는 초기화와 아르는 않을 것입니다 표시는 checked이므로 nullpointerexception이 발생했습니다.