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

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

于 2013-04-03T13:09:53.467 回答