切换时片段重新加载

时间:2018-01-04 18:49:38

标签: android

当switchCompat处于检查状态时,我正在使用片段显示用户信息,并且我也从片段打开了一个活动,当我从程序员的defind按钮单击,从活动返回片段,fragent再次重新加载,并且switchCompat关闭并且用户信息已经过去了。以防止片段再次重新加载,并在将活动返回到片段时显示用户信息。

请帮忙。

1 个答案:

答案 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);