2016-07-08 13 views
0

共有環境設定にラジオボタンの状態を保存することについて、多くの質問がありますが、私が探している解決策はありません。共有プリファレンスからラジオボタンを保存してアクセスする方法は?

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を取得するために使用したコードです:saveArrayloadArray同様

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()が利用できなくなります。

答えて

0
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); 
//->put Toast here and check whether your are getting the id's or not. If you 
//->are getting it, return arrays of id back to calling method 
    } 
} 
+0

さて、あなたはとても簡単に見えました。配列を返すことはトリックでした、ありがとう! –

関連する問題