我正在尝试查看是否选中了复选框,但是我收到了错误。
定义复选框代码:
public class Preferences extends PreferenceActivity {
CheckBoxPreference togglePref;
...
}
CheckBox代码:
public void checkNotify() {
if (togglePref.isChecked()==(true)) {
...
}
}
OnCreate代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//SharedPreferences settings = getSharedPreferences("EasySettingsPreferences", MODE_PRIVATE);
//boolean notify = settings.getBoolean("notify", false);
checkNotify();
rootView = new LinearLayout(this);
rootView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
rootView.setOrientation(LinearLayout.VERTICAL);
togglePref = new CheckBoxPreference(this);
textView = new TextView(this);
textView.setText(R.string.app_name);
titleView = new LinearLayout(this);
titleView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 26));
titleView.setBackgroundResource(R.drawable.pattern_carbon_fiber_dark);
titleView.addView(textView);
preferenceView = new ListView(this);
preferenceView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
preferenceView.setId(android.R.id.list);
PreferenceScreen screen = createPreferenceHierarchy();
screen.bind(preferenceView);
preferenceView.setAdapter(screen.getRootAdapter());
rootView.addView(titleView);
rootView.addView(preferenceView);
this.setContentView(rootView);
setPreferenceScreen(screen);
}
Logcat图片:
logcat pic http://img710.imageshack.us/img710/8529/unledxq.png
调试器图片
debugger pic http://img847.imageshack.us/img847/1192/unled1rn.png
如果可以,请帮助我。谢谢!
答案 0 :(得分:14)
我想你永远不会初始化togglePref
。确保我们需要查看onCreate()
。 (如果我猜错了,我会更新我的答案......)
修改强>
我是正确的。在您初始化checkNotify()
变量之前,请致电togglePref
。检查你的逻辑是否真的有意义在其他所有方法之前调用该方法,或者如果你以后再调用它就没问题。
提示:您可以简化if语句:
// yours:
if (togglePref.isChecked()==(true)) {
// simplified:
if (togglePref.isChecked()) {
答案 1 :(得分:2)
在onCreate()
方法中,您在初始化checkNotify()
之前呼叫togglePref
。您希望将该初始化向上移动(或向下移动checkNotify()
。)