SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Android - próba ponownego otwarcia już zamkniętego obiektu:SQLiteQuery za pomocą loaderManager

Twój kod jest trochę trudny do zrozumienia ze względu na słabe formatowanie.

W każdym razie dostarczona odpowiedź w rzeczywistości nie jest poprawką. Kursor zwrócony w onLoadFinished powinno być zagwarantowane, że nie zostanie zamknięte, więc ładujesz kursor w niewłaściwy sposób. W szczególności, gdy zadzwonisz

adapter.getFilter().filter(s.toString());

Naprawdę nie rozumiem, co się tutaj dzieje, ale rozumiem, że powinieneś zrobić coś innego. Po prostu zapisz filtr zapytania w polu w swoim Fragment i uruchom getLoaderManager().restartLoader(DRINKS_LIST_LOADER, null, this); . Zauważ, że uruchamiasz restartLoader , a nie initLoader , ponieważ masz inne dane, o które chcesz zapytać.

W swoim onCreateLoader , powinieneś użyć filtra, który zapisałeś jako zmienną instancji dla selection .

Niektóre tło

initLoader ładuje dane, które zostały załadowane w ostatnim przebiegu, jeśli były uruchamiane wcześniej. Dlatego wywołujesz metodę inicjalizacji swojego fragmentu/działania. Jest to przydatne, ponieważ nie musisz ponownie pytać o zmianę orientacji.

restartLoader czyści poprzednio załadowane dane, dzięki czemu otrzymujesz nowy Loader pracować z (prawdopodobnie) różnymi danymi.

Jeśli nadal nie jesteś pewien, co robisz, koniecznie przeczytaj ten artykuł, który jest bardzo dobrym artykułem wprowadzającym na temat programów ładujących z przykładowym kodem, który wygląda bardzo podobnie do tego, co chcesz osiągnąć. Ładowarki są na początku dość enigmatyczne, ale kiedy już to opanujesz, płynie się gładko.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak pobrać dane z bazy danych i wyświetlić je jako ListView?

  2. Jak zaimplementować bazę danych SQLite do przechowywania obrazu bitmapowego i tekstu?

  3. Android - SQLite - WYBIERZ MIĘDZY Date1 A Date2

  4. UnsatisfiedLinkError w metodzie natywnej

  5. Jak działa funkcja Time() w SQLite