2017-09-02 16 views
1

ビューの値を共有設定に保存するときに「キー」値を選択する良い方法はありますか?共有設定に値を保存するためのキーフィールド

sPref = getSharedPreferences("Settings",MODE_PRIVATE); 
     SharedPreferences.Editor ed = sPref.edit(); 
     ed.putBoolean("R.id.CashButton",CashButton.isChecked()); 
     ... 
     ed.commit(); 

今のところ私は "R"パスと同じキーを使用しています。 しかし、私は私のコードをリファクタリングする必要があります私は私のコードをリファクタリングする必要があります私のビューのidを変更する場合は、Androidスタジオは文字列としてこの使用法を見つけることができないためです。

+1

としてこれを使用してください。 static final String MY_KEY = "my_key"; –

+1

私の目標は、良いコードの可読性を達成することでした。なぜなら、私は同じ "ビューID"のような "キー"を使いたいのです。もし私が静的な刺すようにするなら、それは何も賞賛しません。私はビューID "R.id.Exit"と静的キー文字列 "終了"と私は "R.id.SaveAndExit"に変更することを決めたが、私の静的キーフィールドは "終了"と私はそれを修正する必要があると言うことができます私は彼らと同じになりたいと思っています。それで私はいくつかのアイデアを探し始めるのです。 – Andrew

答えて

0

これは、このように設定することをお勧めしません。

これは主に意見に基づく質問ですが、ビューIDをキーにする必要がある場合は、代替案を提案できます。

ハッシュマップを作成し、静的な文字列キーを格納し、ビューIDでマップします。キーだけを変更する必要があります。

HashMap<Integer, String> mapIdToKey = new HashMap<>(); 
mapIdToKey.put(R.id.action_settings, "ActionSettingsKey"); 
....... 

あなたのクラス内の静的な文字列を作成

sPref = getSharedPreferences("Settings",MODE_PRIVATE); 
SharedPreferences.Editor ed = sPref.edit() 
ed.putBoolean(mapIdToKey.get(R.id.action_settings),CashButton.isChecked()); 
... 
ed.commit(); 
+0

そのような例をありがとうございます。 – Andrew

+0

これが役に立ちそうなら、 @AndrewKubrik –

+0

これは良い方法でない場合は、キー値を選択する一般的な方法は何か教えてください。クラスの静的な文字列ですか? – Andrew

関連する問題