所以基本上我在一个片段中有一个togglebutton,问题是,如果我检查它(true),每当我切换到另一个片段,然后“回来”,状态不会保存,我必须检查它再一次,我想要做的是切换按钮,即使切换片段后也要记住它的状态。 谢谢,希望有人帮忙。
以下是代码:
cocina.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
if(isChecked){
((MainActivity)getActivity()).on2();
Toast.makeText(getActivity(),"On",Toast.LENGTH_SHORT).show();
}
else{
((MainActivity)getActivity()).off2();
Toast.makeText(getActivity(),"Off",Toast.LENGTH_SHORT).show();
}
}
});
答案 0 :(得分:1)
我会尽可能避免使用静态值,因此该值可以在应用程序生命周期中存活。我将布尔值放在SharedPreference
中,并将onCreateView
取回Fragment
,如下所示:
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
cocina.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
if(isChecked){
editor.putBoolean("switchValue", true).commit();
Toast.makeText(getActivity(),"On",Toast.LENGTH_SHORT).show();
}
else{
editor.putBoolean("switchValue", false).commit();
Toast.makeText(getActivity(),"Off",Toast.LENGTH_SHORT).show();
}
}
});
并在需要时检索值:
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
boolean default = sharedPref.getBoolean("switchValue", false);
答案 1 :(得分:0)
您可以采用静态布尔值,其值将设置为true或false,相应地为toogle Switch的状态。在创建片段视图时,你可以应用条件,如果布尔b(说)为假,那么Switch.setChecked(b)。