Как изменить переменные из другого занятия? - PullRequest
0 голосов
/ 04 сентября 2011

Итак, у меня есть два действия: основное со всеми данными и вторичное с предпочтениями. В основном задании есть два массива, к которым я хочу получить доступ из действия «Предпочтения» и работаю с этими двумя массивами. На самом деле мне нужно сбросить все данные в массивах по умолчанию. Есть ли способ сделать это?

Я пытался использовать SharedPreferences, потому что я храню все эти данные в нем. Я изменил значения в нем из действия «Предпочтения», но данные в основном действии, я полагаю, не изменились, потому что они не перезапускаются, просто приостановлены.

1 Ответ

2 голосов
/ 04 сентября 2011

Вы можете использовать SharedPreferences и зарегистрировать OnSharedPreferenceChangeListener и / или обновить данные в методе onResume() вашей Деятельности.

Вот несколько простых примеров:

public class MainActivity extends Activity implements OnSharedPreferenceChangeListener {
    private SharedPreferences prefs;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // get your SharedPreferences objects
        prefs = ...;
    }

    // This method will be called every time your activty comes to the front
    @Override
    protected void onResume() {
        super.onResume();

        // register a listener to get notified when the preferences change
        prefs.registerOnSharedPreferenceChangeListener(this);

        // do whatever you need to do to update the data
        updateData();
    }

    @Override
    protected void onPause() {
        super.onPause();

        // unregister listener if another activity comes to the front to save battery
        prefs.unregisterOnSharedPreferenceChangeListener(this);
    }

    // this method will be called when some preference changes
    public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
        // do whatever you need to do to update the data
        updateData();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...