저장된 값을 보면:
<int name="radioGroup" value="2131231021" />
<int name="radioGroup" value="2131231024" />
어떤 라디오 버튼이 선택되었는지를 저장하는게 아니라, 라디오 버튼의 ID가 저장된 듯한 모습이네요. 아마도 radioGroup.getCheckedId() 같은 메소드를 호출하신 걸로 보입니다. (잘못되었습니다.) 메소드 이름을 보셔도 Id로 되어 있습니다. 코드를 이해하고 잘 작성하는데 이름이 상당히 중요하다는 걸 기억하세요.
SharedPreferences를 접근하는 방법은 개발자 페이지의 API 문서에 잘 나와 있습니다.
https://developer.android.com/reference/android/content/SharedPreferences
그리고 코딩을 하시기 전에 개발자 가이드도 참고하시길 권장합니다.
https://developer.android.com/training/data-storage#pref
간략하게 설명을 드리면
Context.getSharedPreferences(String, int)
를 이용하면 접근하실 수 있습니다. 즉, Context 의 instance는 getSharePreferences(String, Int) 메소드를 통하여 접근할 수 있습니다. Activity의 경우는 Context 의 하위 클래스가 되므로 getSharePreferences()메소드를 통하여 접근하시면 됩니다. 따라서 파일이름과 모드를 넘기시면 됩니다. 두번째 인자는 외부에서는 접근이 되지 않게 하기 위해 사용합니다.
SharedPreferences sharedPreferences = getSharedPreferences("pref", Context.MODE_PRIVATE)
아래는 화면에 있는 라디오 버튼의 값을 처리하는 예제입니다.
private static final int NOT_SET = -1;
private static final int MALE = 0;
private static final int FEMALE = 1;
private static final String GENDER_KEY = "gender"
// onCreate에서 findViewById로 설정을 하세요.
private RadioButton maleBtn; //남
private RadioButton femaleBtn; //여
private void readGender() {
val gender = mPreferences.getInt(GENDER_KEY, NOT_SET);
maleBtn.setChecked(gender == MALE);
femaleBtn.setChecked(gender == FEMALE);
// TextVeiw에 남녀를 표시하고 싶다면
String text = "";
if (gender == MALE) text = "남";
if (gender == FEMALE) text = "여";
textView.setText(text);
}
private void saveGender() {
int gender = getSelectedGender();
mPreferences.edit()
.putInt(GENDER_KEY, gender)
.commit();
}
private int getSelectedGender() {
if (maleBtn.isChecked()) return MALE;
if (femaleBtn.isChecked()) return FEMALE;
return NOT_SET;
}
그리고 올리신 코드의 getString은 숫자을 문자열로 변환시키는 메소드가 아니고, 리소스 파일에 정의된 문자열을 가져오는 메소드입니다. 아래 링크를 확인하세요. https://developer.android.com/reference/android/content/Context#getString(int)
올리신 코드는 살짝 수정했습니다.
public class MainActivity extends AppCompatActivity {
private SharedPreferences mPreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mPreferences = getSharedPreferences("pref", MODE_PRIVATE);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent mIntent = new Intent(MainActivity.this, SettingActivity.class);
startActivity(mIntent);
}
});
int height = mPreferences.getInt("radioGroup", 0);
String strHeight = "" + height; // int 정수 변환. String.valueOf(height), new String(height) 등도 사용할 수 있슴.
Toast.makeText(this, "뭔가", Toast.LENGTH_SHORT).show();
// 위 실행하면 false가 toast 됩니다. => 액티비티에서 getString()은 리소스 파일에 있는 스트링을 읽어오는 메소드입니다.
// Toast.makeText(this, strHeight, Toast.LENGTH_SHORT).show();
}
}