0

私のアプリでは、1 つのインターフェイスにいくつかのチェックボックスがあります。インターフェイスを終了した後、チェックボックスが状態を維持することを望みます。そのため、次に入力すると、前回行ったことを表示できますSharedPreferrences。これを達成するために使用しました。

checkbox1.setOnCheckedChangeListener(new OnCheckedChangeListener(){
    public void onCheckedChanged(CompoundButton arg0, boolean isChecked) {
// TODO Auto-generated method stub
Editor editor = getSharedPreferences("syllabus", 0).edit();
editor.putBoolean("cbx1_ischecked", isChecked);
editor.commit();
}
    });
checkbox2.setOnCheckedChangeListener(new OnCheckedChangeListener(){
    public void onCheckedChanged(CompoundButton arg0, boolean isChecked) {
    // TODO Auto-generated method stub
    Editor editor = getSharedPreferences("syllabus", 0).edit();
    editor.putBoolean("cbx2_ischecked", isChecked);
    editor.commit();
    }

});

しかし、うまくいきません。このページに戻ると、すべてのチェックボックスに「すべてのアイテムが選択されていません」という状態が表示されます。

希望する機能を実現するにはどうすればよいですか?

4

2 に答える 2

3

put date getSharedPreferences の後、以下のように、onCreate でこのデータを使用して checkboz の状態を初期化する必要があります。

// onCreate

SharedPreferences settings = getSharedPreferences("syllabus", 0);
Boolean isChecked = settings.getBoolean("cbx1_ischecked", false);
checkbox1.setChecked(isChecked );
于 2012-11-26T08:10:59.437 に答える
0

値はに保存されますがSharedPreferences、対応するチェックボックスに自動的に復元されるわけではありません。SharedPreferences@talhakosenが述べたように、アクティビティの開始時にそれらを読み取り、チェックボックスを設定する必要があります。

さらに、値が変更されるたびにSharedPreferencesに値を書き込む必要はありません。ユーザーがアクティビティを離れるとき、つまりonStop()メソッドでそれらを保存するだけで十分です。

于 2012-11-26T08:15:43.950 に答える