用户退出应用后保存复选框

时间:2013-04-03 13:02:26

标签: android android-intent

我在我的应用程序中有一些复选框(它们没有做任何事情只是勾选它)我如何保存这样,所以当用户离开应用程序时,它将保存选中的复选框?

当我按下主页按钮时,它会在我返回应用程序时保持选中复选框。但是当我退出应用程序时(使用后退键),它不会保存选中的复选框。

这是我的代码:

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 个答案:

答案 0 :(得分:0)

使用数据库存储复选框值,以便稍后将其用于“使用”

答案 1 :(得分: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"));

答案 2 :(得分: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方法并保存复选框的状态。

答案 3 :(得分:0)

您的代码仅保存状态,但您必须在活动恢复时重置它。您应该覆盖onResume函数并根据保存的设置设置复选框的状态。