如果在SettingsActivity中打开/关闭开关,我该如何检查我的MainActivity。我想检查开关是否打开,如果是,我想做点什么。如何保存此首选项并在重新启动应用程序时保持相同?
以下是我的SettingsActivity的一部分,带有开关
static int audio;
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public static class GeneralPreferenceFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_general);
setHasOptionsMenu(true);
bindPreferenceSummaryToValue(findPreference("example_text"));
bindPreferenceSummaryToValue(findPreference("example_list"));
Preference switchPref = (Preference) findPreference("audio_switch");
switchPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object o) {
boolean isOn = (boolean) o;
if (isOn) {
audio = 1;
}else{
audio = 0;
}
return true;
}
});
}
答案 0 :(得分:0)
我通常会做以下事情:
保存设置 (将其放入您在设置活动中单击按钮或某事时调用的save()方法)
SharedPreferences options =
getSharedPreferences("optionsPreference",
contextOfSettings.MODE_PRIVATE);
options.edit().putString("key", "value").apply();
要执行此操作,您需要在设置活动
中添加此项作为设置中的全局变量
public static Context contextOfSettings;
此onCreate of settings
中的方法@Override
protected void onCreate {
contextOfSettings = getApplicationContext();
}
然后在某个地方键入设置上下文,然后按alt + enter导入它,将其导入主活动中 像这样:
import com.SettingsActivity.contextOfSettings;
然后,您可以在创建MainActivity时获取已保存的值(即使您关闭应用程序仍会保存)
SharedPreferences options = getSharedPreferences("optionsPreference", contextOfSettings.MODE_PRIVATE);
String savedValue = options.getString("key", "defaultValue");
此String可以具有值true和false,您可以使用checkBox.isChecked()结合if语句设置
答案 1 :(得分:0)
您正在正确保存偏好设置值,即使您从onPreferenceChangeListener
返回true 来存储新值。
Preference switchPref = (Preference) findPreference("audio_switch");
switchPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object o) {
boolean isOn = (boolean) o;
if (isOn) {
audio = 1;
}else{
audio = 0;
}
//* Set true to update the state of the Preference with the new value!
return true;
}
});
}
关闭应用程序时正确保存该值,如果要检查可从首选项中读取的值:
//Check the current value in preference.
SharedPreferences switchPrefStatus = PreferenceManager.getDefaultSharedPreferences(getActivity());
boolean switchPrefValue = switchPrefStatus.getBoolean("audio_switch", false);
Toast.makeText(getActivity(), "Current value: " + switchPrefValue, Toast.LENGTH_SHORT).show();