2016-07-08 2 views
0

공유 환경 설정에서 라디오 버튼 상태를 저장하는 것과 관련하여 많은 질문이 있지만 그 중 어느 것도 내가 원하는 해결책을 제공하지 못합니다.공유 환경 설정에서 라디오 버튼을 저장하고 액세스하는 방법은 무엇입니까?

for 루프의 각 라디오 그룹 안에 라디오 그룹 15 개와 라디오 버튼 4 개를 생성합니다. 라디오 그룹은 15 일에서 고유 ID를 가지고 라디오 버튼은 100에서 159

이에 나는 라디오 버튼의 ID를 저장하는 데 사용하는 코드 레인 징 IDS 있습니다

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를 검색하는 데 사용하는 코드입니다 :

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

    } 
} 

saveArray 등을 loadArray도 작동합니다. 배열은 올바른 라디오 버튼 ID로 채워집니다. 문제는 이제 시작 - 내가 그 라디오 버튼에 액세스 할 수없는, 즉 그래서이 loadArray

for(int i=0; i<size; i++) { 
     RadioButton radio1 = (RadioButton) findViewById(array[i]); 
    } 

에 가능한 솔루션 내에서 작동하지 않습니다 onCreateView()

에서만 사용할 수 있기 때문에 내가 findViewById() 할 수 없습니다 findViewById은보기를 onCreateView()에 저장하고 나중에 액세스합니다. 그래서 onCheckedChanged 내부

RadioButton[] allRadio = new RadioButton[15]; 

지금은 라디오 버튼 배열을 만들어, 나는 배열에 선택한 라디오 버튼을 추가 해요 :

public void onCheckedChanged(RadioGroup radioGroup, int i) { 
     RadioButton radio = (RadioButton) rootView.findViewById(i); 
     String selectedValue = radio.getText().toString(); 
     allRadio[radioGroup.getId()-1] = radio; 
} 

위의 코드는 완벽 라디오 버튼 배열 내부하지만 지금 저장 나는 그들을 구할 수 없다! 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

글쎄 너무 쉽게 만들었습니다. 배열을 되 돌리는 것은 트릭을했습니다, 고마워요! –

관련 문제