当switchCompat处于检查状态时,我正在使用片段显示用户信息,并且我也从片段打开了一个活动,当我从程序员的defind按钮单击,从活动返回片段,fragent再次重新加载,并且switchCompat关闭并且用户信息已经过去了。以防止片段再次重新加载,并在将活动返回到片段时显示用户信息。
请帮忙。
答案 0 :(得分:0)
使用 sharedpreferences 存储交换机的状态。
我为你创建了一个方法,它将检查switch的当前状态并将其存储在sharedpreferences
中private void saveSwitchState() {
switch1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
SharedPreferences.Editor editor = getActivity().getSharedPreferences("switchPref", MODE_PRIVATE).edit();
if (isChecked) {
switchState = true;
editor.putBoolean("SWITCH_STATE", switchState);
editor.commit();
} else {
switchState = false;
editor.putBoolean("SWITCH_STATE", switchState);
editor.commit();
}
}
});
}
你需要在OnPause()和片段内的OnResume上调用此方法。当您移动到另一个活动或关闭应用程序时,交换机的状态将存储在共享首选项
中@Override
public void onResume() {
super.onResume();
saveSwitchState();
}
@Override
public void onPause() {
super.onPause();
saveSwitchState();
}
现在保存状态,在Oncreateview上读取SharedPreferences值
switch1 = (SwitchCompat) findViewById(R.id.switch_id);
SharedPreferences prefs = getActivity().getSharedPreferences("switchPref", MODE_PRIVATE);
if(!prefs.equals(null)){
switchState = prefs.getBoolean("SWITCH_STATE", false);
}
switch1.setChecked(switchState);