如何在关闭应用程序后保持选中单选按钮 - android studio
How to keep a radio button checked after closing the application - android studio
我是 Android Studio 编码的新手,我刚刚了解了共享首选项。
老师给我布置了一个单选按钮组 (RadioGroup) 的作业,当你选中其中一个按钮时,关闭应用程序,再次打开它,按钮将保持选中状态。
就像您用 SharedPrefrences
保存 EditText
答案一样,我需要用 SharedPrefrences
保存 RadioButton
。
正如我所说的,我是新手,所以请保持简单的回答:)
--已解决--谢谢大家的回答!感谢您的评论,我找到了解决方案! :D
这里是您应该如何在单选组上获取 onCheckChangeListener 以在其中获取选定的单选按钮!
NOTE!!! THERE SHOULD BE IDs GIVEN TO ALL INNER RADIO BUTTONS
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()
{
public void onCheckedChanged(RadioGroup group, int checkedId) {
// checkedId is the RadioButton selected
RadioButton rb=(RadioButton)findViewById(checkedId);
//textViewChoice.setText("You Selected " + rb.getText());
// here the rb.getText() will give you the text and you can send it to your
//sharedPreference with a new key value like you did with the editText values
}
});
And 当您的应用程序启动时,您可以通过 sharefPreference 检查您的 onCreate() 如果值已保存,然后获取 RadioButton 并将其 属性 isSelected 设置为真的!我希望这足够简单!
首先,您要像这样将侦听器设置为 RadioGroup
:
RadioGroup radioGroup = (RadioGroup) findViewById(R.id.yourRadioGroup);
radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// save id into your SharedPreferences
}
});
然后您可以通过共享首选项在 onCreate() 中恢复它并调用 radioGroup.check(id);
。
所以代码看起来像这样:
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
int checkedId = sharedPrefs.getInt("your key", 0);
radioGroup.check(checkedId);
请注意此代码已简化。您需要添加支票等
public class MainActivity extends AppCompatActivity {
// this will be key for the key value pair
public static final String BUTTON_STATE = "Button_State";
// this is name of shared preferences file, must be same whenever accessing
// the key value pair.
public static final String MyPREFERENCES = "MyPrefs" ;
SharedPreferences sharedpreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// helper method to open up the file.
sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
// grab the last saved state here on each activity start
Boolean lastButtonState = sharedpreferences.getBoolean(BUTTON_STATE, false)
RadioButton rb = (RadioButton) findViewById(R.id.radio_button);
// restore previous state
rb.setChecked(lastButtonState);
// set a listener
rb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// call this to enable editing of the shared preferences file
// in the event of a change
SharedPreferences.Editor editor = sharedpreferences.edit();
Boolean isChecked = rb.isChecked();
// use this to add the new state
editor.putBoolean(BUTTON_STATE, isChecked);
// save
editor.apply();
}
});
}
}
试试这个,
RadioGroup radioGroup = findViewById(R.id.radio_gropup);
final SharedPreferences preferences = getSharedPreferences("saved", 0);
radioGroup.check(preferences.getInt("CheckedId", 0));
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("CheckedId", checkedId);
editor.apply();
}
});
我是 Android Studio 编码的新手,我刚刚了解了共享首选项。 老师给我布置了一个单选按钮组 (RadioGroup) 的作业,当你选中其中一个按钮时,关闭应用程序,再次打开它,按钮将保持选中状态。
就像您用 SharedPrefrences
保存 EditText
答案一样,我需要用 SharedPrefrences
保存 RadioButton
。
正如我所说的,我是新手,所以请保持简单的回答:)
--已解决--谢谢大家的回答!感谢您的评论,我找到了解决方案! :D
这里是您应该如何在单选组上获取 onCheckChangeListener 以在其中获取选定的单选按钮!
NOTE!!! THERE SHOULD BE IDs GIVEN TO ALL INNER RADIO BUTTONS
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()
{
public void onCheckedChanged(RadioGroup group, int checkedId) {
// checkedId is the RadioButton selected
RadioButton rb=(RadioButton)findViewById(checkedId);
//textViewChoice.setText("You Selected " + rb.getText());
// here the rb.getText() will give you the text and you can send it to your
//sharedPreference with a new key value like you did with the editText values
}
});
And 当您的应用程序启动时,您可以通过 sharefPreference 检查您的 onCreate() 如果值已保存,然后获取 RadioButton 并将其 属性 isSelected 设置为真的!我希望这足够简单!
首先,您要像这样将侦听器设置为 RadioGroup
:
RadioGroup radioGroup = (RadioGroup) findViewById(R.id.yourRadioGroup);
radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// save id into your SharedPreferences
}
});
然后您可以通过共享首选项在 onCreate() 中恢复它并调用 radioGroup.check(id);
。
所以代码看起来像这样:
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
int checkedId = sharedPrefs.getInt("your key", 0);
radioGroup.check(checkedId);
请注意此代码已简化。您需要添加支票等
public class MainActivity extends AppCompatActivity {
// this will be key for the key value pair
public static final String BUTTON_STATE = "Button_State";
// this is name of shared preferences file, must be same whenever accessing
// the key value pair.
public static final String MyPREFERENCES = "MyPrefs" ;
SharedPreferences sharedpreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// helper method to open up the file.
sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
// grab the last saved state here on each activity start
Boolean lastButtonState = sharedpreferences.getBoolean(BUTTON_STATE, false)
RadioButton rb = (RadioButton) findViewById(R.id.radio_button);
// restore previous state
rb.setChecked(lastButtonState);
// set a listener
rb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// call this to enable editing of the shared preferences file
// in the event of a change
SharedPreferences.Editor editor = sharedpreferences.edit();
Boolean isChecked = rb.isChecked();
// use this to add the new state
editor.putBoolean(BUTTON_STATE, isChecked);
// save
editor.apply();
}
});
}
}
试试这个,
RadioGroup radioGroup = findViewById(R.id.radio_gropup);
final SharedPreferences preferences = getSharedPreferences("saved", 0);
radioGroup.check(preferences.getInt("CheckedId", 0));
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("CheckedId", checkedId);
editor.apply();
}
});