A jeszcze chciałem dopytać, czy muszę w jakiś specjalny sposób deklarować klasę SharedPreferences jeśli chcę zrobić zapis i odczyt w innych klasach? Bo zapis do SP będę robił w klasie (aktywności) z konkretnym ćwiczeniem. I od wartości (true/false) zapisanej w SP będę pokazywał odpowiedni przycisk w innej klasie (w drugiej aktywności). Dlatego odczyt muszę zrobić tam. Jeszcze tego nie testował ale czy jak właśnie zrobić deklarację SP i editora oraz wykonam zapis w klasie X to czy będę mógł tą wartość pobrać w klasie Y.
Może pokażę co mam. A więc w klasie pojedynczego ćwiczenia stworzyłem sobie obiekt SharedPreferences oraz edytor do niego:
public SharedPreferences exercise_1;
public SharedPreferences.Editor editor_exercise_1;
Następnie je zadeklarowałem:
exercise_1 = getSharedPreferences("package_name", Context.MODE_PRIVATE);
editor_exercise_1 = exercise_1.edit();
I jeśli odpowiedni warunek jest spełniony (w instrukcji if) robię przypisanie:
editor_exercise_1.putBoolean("Exercise1", true);
editor_exercise_1.commit();
I teraz tą wartość z tego edytora potrzebują wywołać w innej klasie, w innej aktywności dlatego że do wartości przechowywanej w SP będę warunkował aktywność lub nie aktywność przycisków.
---EDIT---
Być może rozwiązałem problem ale jeszcze nie wiem bo nie mogę przetestować póki co. Zrobiłem to w sposób następujący. Stworzyłem sobie w drugiej klasie obiekty SharedPreferences i zrobiłem getBoolean podając tag który użyłem w poprzedniej klasie:
.....
SharedPreferences exercise_1;
.....
exercise_1 = getSharedPreferences("com.example.ukasz.carrom", Context.MODE_PRIVATE);
boolean ex1 = exercise_1.getBoolean("Exercise1", false);
.....