Android 使用SharedReferences保存切换按钮的状态
我见过其他类似的问题,但都没有解决!我有一个开关按钮。我想保存ToggleButton的状态(选中true或false),即使在应用程序关闭/重新打开时也是如此 我的代码如下所示,但它不会运行 公共类MainActivity扩展了AppCompatActivity{Android 使用SharedReferences保存切换按钮的状态,android,android-sharedpreferences,android-togglebutton,Android,Android Sharedpreferences,Android Togglebutton,我见过其他类似的问题,但都没有解决!我有一个开关按钮。我想保存ToggleButton的状态(选中true或false),即使在应用程序关闭/重新打开时也是如此 我的代码如下所示,但它不会运行 公共类MainActivity扩展了AppCompatActivity{ ToggleButton toggle1 = (ToggleButton) findViewById(R.id.toggle1); @Override protected void onCreate(Bundle save
ToggleButton toggle1 = (ToggleButton) findViewById(R.id.toggle1);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
private void savePreference(Context context)
{
SharedPreferences.Editor editor = context.getSharedPreferences("toggleState1", 0).edit();
editor.putBoolean("toggleState1", toggle1.isChecked());
editor.commit();
}
private void loadPreference (Context context)
{
SharedPreferences prefs = context.getSharedPreferences("toggleState1", 0);
toggle1.setChecked(prefs.getBoolean("toggleState1", false));
}};
private static final String APP_SHARED_PREFERENCE_NAME = "AppSharedPref";
private final static String TOGGLE_STATE_KEY1 = "TB_KEY1";
ToggleButton toggle1;
SharedPreferences sharedPreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sharedPreferences = getSharedPreferences(APP_SHARED_PREFERENCE_NAME, Context.MODE_PRIVATE);
toggle1 = (ToggleButton) findViewById(R.id.toggle1);
toggle1.setChecked(GetState());
toggle1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton arg0, boolean isChecked) {
SaveState(isChecked);
}
});
}
private void SaveState(boolean isChecked) {
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean(TOGGLE_STATE_KEY1, isChecked);
editor.commit();
}
public boolean GetState() {
return sharedPreferences.getBoolean(TOGGLE_STATE_KEY1, false);
}
谢谢你的帮助
ToggleButton toggle1 = (ToggleButton) findViewById(R.id.toggle1);
应该在onCreate()
中,使其成为最后一条语句
而且,它更容易使用
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
应该在onCreate()
中,使其成为最后一条语句
而且,它更容易使用
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
好的,我有答案供将来参考。我最初的尝试没有正确使用共享首选项。您必须为共享首选项对象创建一个“键”和一个“名称”。然后在代码中调用它,如下所示: 公共类MainActivity扩展了AppCompatActivity{
ToggleButton toggle1 = (ToggleButton) findViewById(R.id.toggle1);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
private void savePreference(Context context)
{
SharedPreferences.Editor editor = context.getSharedPreferences("toggleState1", 0).edit();
editor.putBoolean("toggleState1", toggle1.isChecked());
editor.commit();
}
private void loadPreference (Context context)
{
SharedPreferences prefs = context.getSharedPreferences("toggleState1", 0);
toggle1.setChecked(prefs.getBoolean("toggleState1", false));
}};
private static final String APP_SHARED_PREFERENCE_NAME = "AppSharedPref";
private final static String TOGGLE_STATE_KEY1 = "TB_KEY1";
ToggleButton toggle1;
SharedPreferences sharedPreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sharedPreferences = getSharedPreferences(APP_SHARED_PREFERENCE_NAME, Context.MODE_PRIVATE);
toggle1 = (ToggleButton) findViewById(R.id.toggle1);
toggle1.setChecked(GetState());
toggle1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton arg0, boolean isChecked) {
SaveState(isChecked);
}
});
}
private void SaveState(boolean isChecked) {
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean(TOGGLE_STATE_KEY1, isChecked);
editor.commit();
}
public boolean GetState() {
return sharedPreferences.getBoolean(TOGGLE_STATE_KEY1, false);
}
}好的,我有答案供将来参考。我最初的尝试没有正确使用共享首选项。您必须为共享首选项对象创建一个“键”和一个“名称”。然后在代码中调用它,如下所示: 公共类MainActivity扩展了AppCompatActivity{
ToggleButton toggle1 = (ToggleButton) findViewById(R.id.toggle1);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
private void savePreference(Context context)
{
SharedPreferences.Editor editor = context.getSharedPreferences("toggleState1", 0).edit();
editor.putBoolean("toggleState1", toggle1.isChecked());
editor.commit();
}
private void loadPreference (Context context)
{
SharedPreferences prefs = context.getSharedPreferences("toggleState1", 0);
toggle1.setChecked(prefs.getBoolean("toggleState1", false));
}};
private static final String APP_SHARED_PREFERENCE_NAME = "AppSharedPref";
private final static String TOGGLE_STATE_KEY1 = "TB_KEY1";
ToggleButton toggle1;
SharedPreferences sharedPreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sharedPreferences = getSharedPreferences(APP_SHARED_PREFERENCE_NAME, Context.MODE_PRIVATE);
toggle1 = (ToggleButton) findViewById(R.id.toggle1);
toggle1.setChecked(GetState());
toggle1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton arg0, boolean isChecked) {
SaveState(isChecked);
}
});
}
private void SaveState(boolean isChecked) {
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean(TOGGLE_STATE_KEY1, isChecked);
editor.commit();
}
public boolean GetState() {
return sharedPreferences.getBoolean(TOGGLE_STATE_KEY1, false);
}
}非常好,我在loadPreference方法结束后将其放在onCreate中。它仍然不起作用…还有其他想法吗?非常好,我在loadPreference方法结束后将其放在onCreate中。它仍然不起作用…还有其他想法吗?