gpt4 book ai didi

java - 切换不持续

转载 作者:行者123 更新时间:2023-12-02 10:23:18 25 4
gpt4 key购买 nike

我在 fragment 中做了一个切换,它在 MainActivity 中使用 fragment 布局。 fragment 布局由四个 fragment 共享(或者)。它使用一个方法 loadFragment() 在 fragment 之间进行更改。

在其中一个 fragment 中,有一个切换按钮,但是每当我在 fragment 之间进行更改时,开关就不会保留其状态。我怎样才能让它坚持下去?我尝试过 SharedPreferences。

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_mufradat_harian, container, false);

mufradatSwitch = v.findViewById(R.id.switchMufradat);
mufradatSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(mufradatSwitch.isChecked()){
SharedPreferences pres = PreferenceManager.getDefaultSharedPreferences(getContext());
Boolean checked = pres.edit().putBoolean("checked", true).commit();
}else{
SharedPreferences pres = PreferenceManager.getDefaultSharedPreferences(getContext());
Boolean checked = pres.edit().putBoolean("checked", false).commit();

}

}
});

return v;
}

谢谢。

最佳答案

这不是问题,这是正常行为,因为您每次都重新创建 fragment 。但是为了保持开关按钮的状态,您需要将状态保存到一个不会更改的模型中,该模型应该位于您的 Activity 内,并将该模型传递给 fragment 以获得该模型中开关按钮的状态并将其传递给开关按钮。

  1. 创建一个包含持久数据的模型。
  2. 将此模型添加到包含 fragment 的activity中。
  3. 将此模型传递给包含开关的 fragment 。
  4. 将开关的状态设置为模型内部的状态。
  5. 更改开关状态时,将模型内的值更改为新状态。

关于java - 切换不持续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54167291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com