Android Studio, zapisanie danych

Android Studio, zapisanie danych
X9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 25
0

Mój program zawiera dwie aktywności, aktywność nr 1 z przyciskiem, który przekierowuje do aktywności numer 2, gdzie jest pole tekstowe do uzupełnienia. Chciałbym żeby to pole tekstowe po powrocie do aktywności pierwszej i ponownym otwarciu aktywności drugiej było uzupełnione napisem, który wcześniej wpisałem. Niestety tak się nie dzieje.Skorzystałem z metody onSaveInstanceState, i także to nie pomogło.

panryz
  • Rejestracja: dni
  • Ostatnio: dni
0

A zapisałeś te dane do bundle? Wrzuć kod to będzie łatwiej

wiciu
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1223
0

A użyłeś tego onSavedInstanceState poprawnie? Pokaż kod. Poza tym, to jest 5 sekund w wyszukiwarce: https://stackoverflow.com/a/6525808/1150795

Michał Sikora
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 834
0

Przecież zapisywanie czegokolwiek w onSaveInstanceState() tutaj w niczym nie pomoże. Dane z Bundle są używane przy odtwarzaniu aktywności po zmianie konfiguracji albo śmierci procesu. Wyjście z aktywności czyści jej stan.

@xyz91i Masz w zasadzie 3 wyjścia.

  1. Zapisywać dane w jakimś obiekcie, który żyje dłużej niż aktywność.
  2. Zapisywać dane na stałe np. w SharedPreferences.
  3. Korzystać z dodatkowych danych w przekazanych do Intent startujących drugą aktywność i odbierać je w pierwszej aktywności za pomocą startActivityForResult() + onActivityResult().
X9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 25
0

@Michał Sikora: Czy bazy danych wchodzą w grę?

Michał Sikora
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 834
0

Wchodzą, ale to stosowanie armaty do zabicia muchy.

X9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 25
0

@Michał Sikora: Aha, no rozumiem, bo ta aplikacja to miałoby być proste toDoList, i moim problemem było to, że po wpisaniu czegoś w nowej aktywności, po powróceniu do aktywności początkowej, i ponowne otwarcie aktywności gdzie zapisywaliśmy nasze notatki, te właśnie wpisane wcześniej notatki nie były widoczne. Dziwiło mnie dlaczego tak się dzieje, ale teraz mam rozumieć, że w takim przypadku aktywność nie jest niszczona, tylko po prostu czyszczony jest stan.

Michał Sikora
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 834
1
xyz91i napisał(a):

w takim przypadku aktywność nie jest niszczona, tylko po prostu czyszczony jest stan.

Aktywność jest niszczona i jej stan jest czyszczony.

Natomiast do tego co opisałeś, to baza danych powinna być dobrym wyjściem, zakładając że takich notatek może być wiele.

X9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 25
0

@Michał Sikora: Okej, bo właśnie przerabiam książkę o Androidzie i tam był podany przykład użycia funkcji onSaveInstanceState oraz onCreate, których używaliśmy by zapisać dane w przypadku niszczenia aktywności, na przykład poprzez obrót ekranu, albo zadziałanie jakieś innej aplikacji. Mam rozumieć, że w takich przypadkach stan tych aplikacji nie jest czyszczony, skoro możemy wcześniej wprowadzone dane zapisać w wymiennionych wyżej funkcjach.

Michał Sikora
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 834
0

onSavedInstanceState() służy do przechowywania małych ilości danych w przypadkach, gdy aktywność jest zniszczona niejako nieintencjonalnie. Mam na myśli przez system, czyli tak jak napisałeś przy zmiane konfiguracji lub w przypadku śmerci procesu.

Tutaj masz w miarę ok rozpisane, jak można przechowywać dane w różny sposób – https://developer.android.com/topic/libraries/architecture/saving-states.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.