Вам нужно каким-то образом перезагрузить ваши предпочтения, когда действие предпочтений закончится.Я думал, что предложение Дирола о загрузке их в onResume () вместо onCreate () было превосходным;Ты это пробовал?Или я также неправильно понимаю проблему.
В моем собственном случае я запустил действие предпочтений с помощью startActivityForResult (), а затем при обратном вызове результата действия я перезагрузил предпочтения.
Фрагменты кода:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU_PREFERENCES:
Intent intent = new Intent().setClass(this, CalcPreferences.class);
startActivityForResult(intent, MENU_PREFERENCES);
break;
default: return super.onOptionsItemSelected(item);
}
return true;
}
@Override
protected void onActivityResult(int req, int result, Intent data) {
switch( req ) {
case MENU_PREFERENCES:
SharedPreferences sp =
PreferenceManager.getDefaultSharedPreferences(this);
updatePreferences(sp);
break;
default:
super.onActivityResult(req, result, data);
break;
}
}
@Override
protected void updatePreferences(SharedPreferences sp) {
super.updatePreferences(sp);
keyclick = sp.getBoolean("keyclick", keyclick);
}
В любом случае, это то, что работает для меня.Я могу попробовать переместить вызов updatePreferences () в onResume () самостоятельно, чтобы проверить, работает ли он тоже.