5

チェックボックスがオンになっているかどうかを確認しようとしていますが、エラーが発生します。

チェックボックスコードの定義:

public class Preferences extends PreferenceActivity {

CheckBoxPreference togglePref;

...
}

チェックボックスコード:

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

デバッガー画像

デバッガー写真http://img847.imageshack.us/img847/1192/unled1rn.png

できれば助けてください。ありがとう!

4

2 に答える 2

14

私はあなたが決して初期化しないと思いますtogglePref。確認する必要がありますonCreate()。(推測が間違っていた場合は、回答を更新します...)

編集 私は正しかった。変数checkNotify()を初期化する前に呼び出します。togglePrefそのメソッドを他のすべての前に呼び出すことが本当に意味があるかどうか、または後で呼び出す場合は問題ないかどうか、ロジックを確認してください。

ヒント:ifステートメントを簡略化できます。

// yours:
if (togglePref.isChecked()==(true)) {
// simplified:
if (togglePref.isChecked()) {
于 2011-06-02T23:11:37.327 に答える
2

あなたのメソッドでは、初期化される前にonCreate()呼び出しています。その初期化を上に移動(または下に移動)します。checkNotify()togglePrefcheckNotify()

于 2011-06-02T23:19:59.267 に答える