如果选中了切换按钮

Tes*_*234 5 android togglebutton

好吧,我想看看是否选中了复选框,但是我收到了错误.

定义复选框代码:

public class Preferences extends PreferenceActivity {

CheckBoxPreference togglePref;

...
}
Run Code Online (Sandbox Code Playgroud)

CheckBox代码:

public void checkNotify() {   

if (togglePref.isChecked()==(true)) {

...

   }

}
Run Code Online (Sandbox Code Playgroud)

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);
Run Code Online (Sandbox Code Playgroud)

}

Logcat图片:

logcat pic http://img710.imageshack.us/img710/8529/unledxq.png

调试器图片

调试器图片http://img847.imageshack.us/img847/1192/unled1rn.png

如果可以,请你帮助我.谢谢!

War*_*ith 14

我想你永远不会初始化togglePref.确定我们需要看到onCreate().(如果我猜错了,我会更新我的答案......)

编辑 我是对的.checkNotify()在你甚至初始化togglePref变量之前调用.检查你的逻辑是否真的有意义在其他所有方法之前调用该方法,或者如果你以后再调用它就没问题.

提示:您可以简化if语句:

// yours:
if (togglePref.isChecked()==(true)) {
// simplified:
if (togglePref.isChecked()) {
Run Code Online (Sandbox Code Playgroud)


Dan*_*lau 2

在您的onCreate()方法中,您在初始化checkNotify()之前调用。togglePref您想要将该初始化向上移动(或checkNotify()向下移动。)