0

Fragmentにボタンをクリックした状態を保存しようとしているこのアプリケーションがあります。しかし、私がどれほど試しても、何も格納されていないようです。私のコードは間違いなく良いようです。共有設定がフラグメント内で機能しない

public class ClubHome extends Fragment { 

    ImageView bell,bellring; 
    TextView beltext,belringtext; 
    SharedPreferences saved_values; 
    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.club_home, container, false); 

     Bundle args = getArguments(); 
     final String index = args.getString("club", "Party"); 

     saved_values = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()); 

     bell= (ImageView) view.findViewById(R.id.bell); 
     bellring= (ImageView) view.findViewById(R.id.bellring); 
     beltext= (TextView) view.findViewById(R.id.bellmsg); 
     belringtext= (TextView) view.findViewById(R.id.bellringmsg); 

     bell.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       belringtext.setVisibility(View.VISIBLE); 
       bellring.setVisibility(View.VISIBLE); 
       bell.setVisibility(View.INVISIBLE); 
       beltext.setVisibility(View.INVISIBLE); 
       SharedPreferences.Editor editor=saved_values.edit(); 
       editor.putBoolean(index,true); 
       editor.apply(); 
       editor.commit(); 
      } 
     }); 

     bellring.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       belringtext.setVisibility(View.INVISIBLE); 
       bellring.setVisibility(View.INVISIBLE); 
       bell.setVisibility(View.VISIBLE); 
       beltext.setVisibility(View.VISIBLE); 
       SharedPreferences.Editor editor=saved_values.edit(); 
       editor.putBoolean(index,false); 
       editor.apply(); 
       editor.commit(); 
      } 
     }); 

     boolean stat = saved_values.getBoolean(index,false); 

     if (stat){ 
      belringtext.setVisibility(View.INVISIBLE); 
      bellring.setVisibility(View.INVISIBLE); 
      bell.setVisibility(View.VISIBLE); 
      beltext.setVisibility(View.VISIBLE); 
     } else { 
      belringtext.setVisibility(View.VISIBLE); 
      bellring.setVisibility(View.VISIBLE); 
      bell.setVisibility(View.INVISIBLE); 
      beltext.setVisibility(View.INVISIBLE); 
     } 
    } 
} 

答えて

1

SharedPreferenceにデータを保存する実装が間違っています。

あなたの好みの属性を最初に取得する必要があります。あなたのボタンのonClickListenerで今

SharedPreference pref = getActivity().getSharedPreferences("MY_PREFERENCES", Activity.MODE_PRIVATE); 

を所望の値を保存するには、このような何かを行います。

bell.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     // .. Set visibility of items. 
     pref.edit().putBoolean("INDEX", true).apply(); 
    } 
}); 

あなたはこの

boolean indexStatus = pref.getBoolean("INDEX", false); // false is the default value if nothing is returned. 
+0

おかげでたくさんのような何かをする必要がありSharedPreferenceからINDEXの格納された値を取得するには! –

関連する問題