2016-11-28 11 views
0

基本的に私はフラグメント内にトグルボタンを持っていますが、私が別のフラグメントに切り替えて "戻る"私はもう一度それをチェックしなければなりません、私がしたいのは、フラグメントを切り替えた後でもその状態を記憶するトグルボタンです。 ありがとう、誰かが助けてくれることを願っています。ここでフラグメントを切り替えるときToggleButtonの状態が変わる

は、コードは次のとおりです。

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

あなたは、静的なブールにtoogleスイッチの状態をそれに応じて、trueまたはfalseに設定されるの値を取ることができます。また、フラグメントのビューを作成するときに、ブール値b(false)がfalseの場合、Switch.setChecked(b)という条件を適用できます。

+0

、私はそれはすべきではないと思いますその場合、フラグメントクラスのすべてのインスタンス、つまり基本的にどのフラグメントも同じ値を共有しますが、これは望ましくない可能性があります。他の賢明なはい、チェックボックスの状態を保存するコードのブール値はおそらくあなたの周りの簡単な方法です。 – jrsall92

+1

はい、私は間違っていると思います。 SharedPrefはそれを行うための好ましい方法です。 – pawar

1

静的な値を可能な限り使用しないようにして、値がアプリのライフサイクルに耐えられるようにします。私はSharedPreferenceにブール値を入れて、バックこのようなFragmentonCreateViewそれを取得したい:

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); 
+0

私はこの行を置くべきです:boolean default = sharedPref.getBoolean( "switchValue"、false); ?フラグメントの内側にも? –

+0

あなたのフラグメントの 'onCreateView'では、' setOnCheckedChangeListener'を設定する直前にcocina.setChecked(デフォルト)を実行します – Jaythaking

関連する問題