我在下面的简单活动中遇到问题。我有一个全局变量,它定义了此激活中我的复选框的状态。如果variable = 0则不检查复选框,否则如果它= 1则选中复选框。当我启动活动时,应根据该全局变量的值来检查或不检查复选框状态。问题出在这里:
if(o == 1){
on.setChecked(true);
czas.setEnabled(true);
}
没有on.setChecked(true)一切正常。但是,当在活动开始时将checkbox设置为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);
}
}
});
}
}
答案 0 :(得分:2)
需要初始化
on = (CheckBox) findViewById(R.id.checkBox1);
上面的
if(o == 1){
on.setChecked(true);
czas.setEnabled(true);
}
您的视图未初始化,您将标记为checked
,因此发生了nullpointerexception
。