共有環境設定にラジオボタンの状態を保存することについて、多くの質問がありますが、私が探している解決策はありません。共有プリファレンスからラジオボタンを保存してアクセスする方法は?
forループ内の各ラジオグループ内に15個のラジオグループと4個のラジオボタンを作成しています。ラジオ・グループは、1から15に固有のIDを持っており、ラジオボタンは、これは私がラジオボタンにIDを保存するために使用したコードである100から159に
の範囲のIDを持っている:
public void saveArray(int[] array, String arrayName) {
SharedPreferences prefs = getActivity().getSharedPreferences("preferencename", 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt(arrayName +"_size", array.length);
for(int i=0;i<array.length;i++) {
editor.putInt(arrayName + "_" + i, array[i]);
}
editor.commit();
}
array
は固有のIDが含まれていますチェックされているすべてのラジオボタンのうち、私は上記のコードをテストしましたが、それは完全に動作しますが、問題は私がアクセスできないことです。
これは私がラジオボタンのIDを取得するために使用したコードです:saveArray
、loadArray
同様
public void loadArray(String arrayName, Context mContext) {
SharedPreferences prefs = mContext.getSharedPreferences("preferencename", 0);
int size = prefs.getInt(arrayName + "_size", 0);
int array[] = new int[size];
for(int i=0;i<size;i++) {
array[i] = prefs.getInt(arrayName + "_" + i, 0);
}
}
も動作します。配列には、正しいラジオボタンIDが入力されます。 問題が始動 - 私はそれらのラジオボタンにアクセスできないが、だから、これはloadArray
for(int i=0; i<size; i++) {
RadioButton radio1 = (RadioButton) findViewById(array[i]);
}
内に可能な解決策を動作しませんonCreateView()
でのみ利用可能ですので、私はfindViewById()
を行うことはできませんfindViewById
はビューをonCreateView()
に格納し、後でそれにアクセスしています。
public void onCheckedChanged(RadioGroup radioGroup, int i) {
RadioButton radio = (RadioButton) rootView.findViewById(i);
String selectedValue = radio.getText().toString();
allRadio[radioGroup.getId()-1] = radio;
}
上記のコードは完全に今、アレイ内のラジオボタンが格納されますが:だから私は、ラジオボタン配列
RadioButton[] allRadio = new RadioButton[15];
今すぐonCheckedChanged
の内側に、私は配列に選択されたラジオボタンを追加している作成しました私はそれらを救うことができません!共有設定ではint、stringなどを保存できますが、ラジオボタンではできません!これに対する解決策は、ラジオボタンIDを保存することですが、同じ問題が再び始まり、findViewById()
が利用できなくなります。
さて、あなたはとても簡単に見えました。配列を返すことはトリックでした、ありがとう! –