[英]how to make checkbox stay checked when program closes?
在我的程序中,我有大約20個復選框,但是當我選中它們並關閉程序然后再返回到復選框時,它們始終處於未選中狀態,如何使該復選框保持選中狀態。
在onPause函數中,將狀態寫入文件或SharedPreference。 在您的onResume中,讀入該文件/首選項並設置復選框。 您可能需要查看PreferenceActivity為您執行此操作。
您可以使用SharedPreferences
執行此操作。
因此,首先,當您的應用程序轉到onPause
,您需要將每個復選框的狀態存儲在SharedPreferences
:
SharedPreferences prefs = this.getSharedPreferences("com.example.myapp", Context.MODE_PRIVATE);
prefs.putBoolean("checkbox1", checkbox1.isChecked()).commit();
// do this for all 20
然后,您可以選中onResume
和onCreate
復選框:
checkbox1.setChecked(prefs.getBoolean("checkbox1", false));
您應該考慮使用“ 共享首選項” 。
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
寫入共享首選項:
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.saved_high_score), newHighScore);
editor.commit();
從共享首選項中讀取
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
int defaultValue = getResources().getInteger(R.string.saved_high_score_default);
long highScore = sharedPref.getInt(getString(R.string.saved_high_score), defaultValue);
這也是關於實現它們的非常簡單的教程 。
要求的示例代碼:
主要活動類別:
package com.zeus.example;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.widget.CheckBox;
public class MainActivity extends Activity {
CheckBox chkBox1, chkBox2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
chkBox1 = (CheckBox) findViewById(R.id.checkBox1);
chkBox2 = (CheckBox) findViewById(R.id.checkBox2);
SharedPreferences getPrefs =
PreferenceManager.getDefaultSharedPreferences(getBaseContext());
boolean value = getPrefs.getBoolean("checkbox_preference", true);
chkBox1.setSelected(value); // Setting the value reflected from the preference
chkBox2.setSelected(!value); // Setting the value opposite of the preference(Just an example)
}
}
偏好活動類別:
package com.zeus.example;
import android.os.Bundle;
import android.preference.PreferenceActivity;
public class Prefs extends PreferenceActivity{
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);
}
}
設置XML:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference
android:key="checkbox_preference"
android:defaultValue="false"
android:title="CheckBox1"
/>
</PreferenceScreen>
盡管此方法很簡單,但不建議使用,建議改用Preference Fragments
使用SharedPreferences 。 永久存儲小值的最簡單方法。
由於您有多個復選框,請使用SharedPreferences.Editor putStringSet(字符串鍵,Set <String>值)
您可以使用SimpleSharedPreferences在putStringSet
是回遷到API-1。
用法:無編輯,無提交。
SimpleSharedPreferences mPreferences = new SimpleSharedPreferences(getApplicationContext()); //Init.
mPreferences.putStringSet("STRING_SET_KEY", mStringSet); //Single Line
mPreferences.getStringSet("STRING_SET_KEY", null); // Get String set.
mPreferences.putBoolean("INTEGER_BOOL", true); //Just an example.
注意:我是SimpleSharePreferences的作者。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.