0

アプリにいくつかのチェックボックスがあります (チェックボックスにチェックを入れるだけでは何もしません) ユーザーがアプリを離れたときにチェックボックスを保存するにはどうすればよいですか?

ホームボタンを押した瞬間に、アプリに戻ったときにチェックボックスがオンのままになります。しかし、(戻るキーを使用して)アプリを終了すると、チェックされたチェックボックスは保存されません。

これが私のコードです:

private CheckBox ch;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ch = (CheckBox) findViewById(R.id.checkBox1);

    ch.setOnClickListener(new View.OnClickListener() {

        private String PREFRENCES_NAME;

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
        if(ch.isChecked())
                {

            SharedPreferences settings = getSharedPreferences(PREFRENCES_NAME, 0);
            ch.setChecked(settings.getBoolean("cbx1_ischecked" ,true));
            settings.edit().putBoolean("check",false).commit();
            Toast.makeText(getApplicationContext(), "Check", Toast.LENGTH_SHORT).show();
            }
        else
        {
            Toast.makeText(getApplicationContext(), "Uncheck", Toast.LENGTH_SHORT).show();
        }}
    });
    }

誰でも私を助けてもらえますか?

4

4 に答える 4

0

データベースを使用してチェックボックスの値を保存し、後で取得して使用します

于 2013-04-03T13:05:24.943 に答える
0

sharedPreferences を使用しようとしていることがわかりましたが、もう少しです。少し変更できる基本的な例を示しましょう。

// save boolean in sharedPreferences (this code goes in if(ch.isChecked()))
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("some_key", true); // here true is the value you want to save if the checkbox is checked
editor.commit();                    

// restore string in sharedPreferences (usually you have this onCreate method) 
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
checkbox.setChecked(settings.getBoolean("some_key", "false"));
于 2013-04-03T13:06:50.193 に答える
0

onPause メソッドで行う必要があります。

  @Override
    protected void onPause() {
        super.onPause();
         if(ch.isChecked())
            {

        SharedPreferences settings = getSharedPreferences(PREFRENCES_NAME, 0);
        ch.setChecked(settings.getBoolean("cbx1_ischecked" ,true));
        settings.edit().putBoolean("check",true).commit();
                    }
    else
    {
          SharedPreferences settings = getSharedPreferences(PREFRENCES_NAME, 0);
        ch.setChecked(settings.getBoolean("cbx1_ischecked" ,false));
        settings.edit().putBoolean("check",false).commit();
    }}


}

そのため、アクティビティが破棄されるか終了するたびに onPause メソッドが呼び出され、チェックボックスの状態が保存されます。

于 2013-04-03T13:08:36.517 に答える
0

あなたのコードは状態を保存するだけですが、アクティビティが再開したときにそれをリセットする必要があります。onResume 関数をオーバーライドし、保存された設定に従ってチェックボックスの状態を設定する必要があります。

于 2013-04-03T13:09:53.467 に答える