Android 使用 sharedpreferences 在单击另一个按钮时保存单选按钮值
Android Saving radio button value on another button click using sharedpreferences
我设法保存了文本字段,但不知道如何在单击“保存”时保存单选按钮的所选值。
以下内容适用于一个字段,但我想为 Sex 保存值。 radiogroup的id是radioSex.
请有人帮我处理代码,因为我查看了文档,但总是感到困惑或出错。
谢谢!
这是我的代码:
public class Settings extends Activity {
EditText editText;
Button button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings);
editText = (EditText) findViewById(R.id.editText);
button = (Button) findViewById(R.id.button);
button.setOnClickListener(new Button_Clicker());
loadSavedPreferences();
}
private void loadSavedPreferences() {
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(this);
String name = sharedPreferences.getString("savedname", "Your Name");
editText.setText(name);
}
private void savePreferences(String key, String value) {
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(this);
Editor editor = sharedPreferences.edit();
editor.putString(key, value);
editor.commit();
}
class Button_Clicker implements Button.OnClickListener {
public void onClick(View v) {
savePreferences("savedname", editText.getText().toString());
finish();
}
}
}
要保存就这样使用
private void saveGenderInPreference() {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
Editor editor = sharedPreferences.edit();
radioSexGroup = (RadioGroup) findViewById(R.id.radioSex);
int selectedId = radioSexGroup.getCheckedRadioButtonId();
if(selectedId == R.id.male_radio_button)
editor.putBoolean("is_male", true);
else
editor.putBoolean("is_male", false);
editor.commit();
}
在 onClick()
中调用 saveGenderInPreference()
方法,或者当你想保存它时调用 saveGenderInPreference()
方法。
像这样加载使用
RadioButton male = (RadioButton)findViewById(R.id.male_radio_button);
RadioButton female = (RadioButton)findViewById(R.id.female_radio_button);
if(sharedPreferences.getBoolean("is_male", false))
male.setChecked(true);
else
female.setChecked(true);
在loadSavedPreferences
中使用此代码
P.S. Id R.id.male_radio_button
是指示性的。在此处使用您自己的 ID
你可以这样做:
RadioGroup radiogroup = (RadioGroup) findViewById(R.id.radioSex);
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
Editor editor = sharedPreferences.edit();
radiogroup.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch(checkedId){
case R.id.radio0:
editor.putString("sex", "Male");
break;
case R.id.radio1:
editor.putString("sex", "Female");
break;
}
}
});
我设法保存了文本字段,但不知道如何在单击“保存”时保存单选按钮的所选值。
以下内容适用于一个字段,但我想为 Sex 保存值。 radiogroup的id是radioSex.
请有人帮我处理代码,因为我查看了文档,但总是感到困惑或出错。
谢谢!
这是我的代码:
public class Settings extends Activity {
EditText editText;
Button button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings);
editText = (EditText) findViewById(R.id.editText);
button = (Button) findViewById(R.id.button);
button.setOnClickListener(new Button_Clicker());
loadSavedPreferences();
}
private void loadSavedPreferences() {
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(this);
String name = sharedPreferences.getString("savedname", "Your Name");
editText.setText(name);
}
private void savePreferences(String key, String value) {
SharedPreferences sharedPreferences = PreferenceManager
.getDefaultSharedPreferences(this);
Editor editor = sharedPreferences.edit();
editor.putString(key, value);
editor.commit();
}
class Button_Clicker implements Button.OnClickListener {
public void onClick(View v) {
savePreferences("savedname", editText.getText().toString());
finish();
}
}
}
要保存就这样使用
private void saveGenderInPreference() {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
Editor editor = sharedPreferences.edit();
radioSexGroup = (RadioGroup) findViewById(R.id.radioSex);
int selectedId = radioSexGroup.getCheckedRadioButtonId();
if(selectedId == R.id.male_radio_button)
editor.putBoolean("is_male", true);
else
editor.putBoolean("is_male", false);
editor.commit();
}
在 onClick()
中调用 saveGenderInPreference()
方法,或者当你想保存它时调用 saveGenderInPreference()
方法。
像这样加载使用
RadioButton male = (RadioButton)findViewById(R.id.male_radio_button);
RadioButton female = (RadioButton)findViewById(R.id.female_radio_button);
if(sharedPreferences.getBoolean("is_male", false))
male.setChecked(true);
else
female.setChecked(true);
在loadSavedPreferences
P.S. Id R.id.male_radio_button
是指示性的。在此处使用您自己的 ID
你可以这样做:
RadioGroup radiogroup = (RadioGroup) findViewById(R.id.radioSex);
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
Editor editor = sharedPreferences.edit();
radiogroup.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch(checkedId){
case R.id.radio0:
editor.putString("sex", "Male");
break;
case R.id.radio1:
editor.putString("sex", "Female");
break;
}
}
});