4

我很新,如果有人可以演示在 android 应用程序内的 java 中保存许多复选框状态所需的代码,我将不胜感激。

假设我有一个用户需要完成一项任务的工具列表(十个或更多),并希望他们能够检查每个工具并保存该数据(在应用程序中,而不是 sQlite),以便在何时记录他们返回应用程序。

我知道这是如何完成的,但我真的觉得我需要查看代码才能正确理解。

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.CheckBox;

public class CheckBoxTest extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.checkboxtest);
    CheckBox cb1,cb2,cb3,cb4;

    cb1 = (CheckBox)findViewById(R.id.checkBox1);
    cb2 = (CheckBox)findViewById(R.id.checkBox2);
    cb3 = (CheckBox)findViewById(R.id.checkBox3);
    cb4 = (CheckBox)findViewById(R.id.checkBox4);   
     }
 }
4

2 回答 2

11

使用以下代码在 SharedPreference 中存储和检索数据。您在 SharedPreference 中保存每个复选框状态

//从SharedPreference中获取值

SharedPreferences preferences = getApplicationContext().getSharedPreferences("PROJECT_NAME", android.content.Context.MODE_PRIVATE);
boolean value = preferences.getBoolean("KEY", false);
String value = preferences.getString("KEY");

//在SharedPreference中保存值

SharedPreferences preferences = getApplicationContext().getSharedPreferences("PROJECT_NAME", android.content.Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("KEY", value);
editor.putBoolean("KEY", value);
editor.commit();

看看它的一些小的变化::::

public class CheckBoxTest extends Activity implements OnCheckedChangeListener {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.favorites_add_button);
            CheckBox cb1,cb2,cb3,cb4;

            cb1 = (CheckBox)findViewById(R.id.checkBox1);
            cb1.setChecked(getFromSP("cb1"));
            cb1.setOnCheckedChangeListener(this);
            cb2 = (CheckBox)findViewById(R.id.checkBox2);
            cb2.setChecked(getFromSP("cb2"));
            cb2.setOnCheckedChangeListener(this);
            cb3 = (CheckBox)findViewById(R.id.checkBox3);
            cb3.setChecked(getFromSP("cb3"));
            cb3.setOnCheckedChangeListener(this);
            cb4 = (CheckBox)findViewById(R.id.checkBox4);
            cb4.setChecked(getFromSP("cb4"));
            cb4.setOnCheckedChangeListener(this);

        }
        private boolean getFromSP(String key){
        SharedPreferences preferences = getApplicationContext().getSharedPreferences("PROJECT_NAME", android.content.Context.MODE_PRIVATE);
        return preferences.getBoolean(key, false);
        }
        private void saveInSp(String key,boolean value){
        SharedPreferences preferences = getApplicationContext().getSharedPreferences("PROJECT_NAME", android.content.Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = preferences.edit();
        editor.putBoolean(key, value);
        editor.commit();
        }
        @Override
        public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked) {
            // TODO Auto-generated method stub
            switch(buttonView.getId()){
            case R.id.checkBox1:
            saveInSp("cb1",isChecked);
            break;
            case R.id.checkBox2:
            saveInSp("cb2",isChecked);
            break;

            case R.id.checkBox3:
            saveInSp("cb3",isChecked);
            break;

            case R.id.checkBox4:
            saveInSp("cb4",isChecked);
            break;
            }

        }
        }
于 2012-04-20T00:20:20.977 回答
0

嗨,我尝试了上述方法,但在重新启动或重新启动我的 android 设备后,我会失去选项菜单的选中状态。我想说,为了解决这个问题:

您有 2 个选项:

  1. 在活动的生命周期内获得共享偏好值。

  2. 打电话.clear之前.commit

看我的回答:

重新启动Android后自定义小部件中的Android持久可检查菜单

于 2016-05-03T08:47:13.167 回答