我在settings.java中有以下代码:
public static int numberOfQuestions = 0;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
pref = getSharedPreferences(Constants.PREF_SETTINGS, 0);
final RadioGroup rg_numberOfQuestions = (RadioGroup) findViewById(R.id.radioGroupQuestions);
rg_numberOfQuestions.setOnCheckedChangeListener(this);
RadioButton rbtn = ((RadioButton) rg_numberOfQuestions.findViewById(pref.getInt("NQ", 0)));
if(rbtn!=null)
rbtn.setChecked(true);
}
public void onCheckedChanged(RadioGroup rg, int i) {
switch (rg.getCheckedRadioButtonId())
{
case R.id.rb_0to10:
numbersBetween = 10;
break;
case R.id.rb_0to25:
numbersBetween = 25;
break;
case R.id.rb_0to50:
numbersBetween = 50;
break;
}
if(rg.getCheckedRadioButtonId() == R.id.rb_0to10 || rg.getCheckedRadioButtonId() == R.id.rb_0to25 || rg.getCheckedRadioButtonId() == R.id.rb_0to50)
{
savePref("NB", rg.getCheckedRadioButtonId());
}
}
这是保存和访问首选项的代码:
private void savePref(String key, int value) {
pref = getSharedPreferences(Constants.PREF_SETTINGS, 0);
editor = pref.edit();
editor.putInt(key, value);
editor.commit();
}
private void savePref(String key, Boolean value) {
pref = getSharedPreferences(Constants.PREF_SETTINGS, 0);
editor = pref.edit();
editor.putBoolean(key, value);
editor.commit();
}
}
如果我在设置中numberOfQuestions变量得到更新,它在我的另一个名为main.java的视图中工作正常。但是让我说我直接打开main.java并且不打开设置第一个numberOfQuestions没有正确的值。是否有更简单的方法将共享偏好值转移到其他视图?或者我还需要在main.java中编写所有案例吗?
答案 0 :(得分:0)
您无需执行任何特殊操作,您可以以相同的方式使用应用各个部分的相同共享偏好设置。
您可以将访问共享首选项的方法移动到:
答案 1 :(得分:0)
你可以使用
numberOfQuestions = getSharedPreferences(Constants.NUM_OF_QUESTIONS, 0);
初始化它的价值。然后在您的应用程序中的任何位置访问它