切换片段时,ToggleButton会改变状态

时间:2016-11-28 16:22:42

标签: android android-fragments togglebutton

所以基本上我在一个片段中有一个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();
            }
        }
    });

2 个答案:

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