Din kod är lite svår att förstå på grund av dålig formatering.
Hur som helst, det angivna svaret är faktiskt inte en fix. Markören återvände till onLoadFinished
bör garanterat inte vara stängd, så du laddar markören på fel sätt. Närmare bestämt när du ringer
adapter.getFilter().filter(s.toString());
Jag förstår inte riktigt vad som händer här, men jag förstår att du borde göra något annat. Lagra bara frågefiltret i ett fält i ditt Fragment
och kör getLoaderManager().restartLoader(DRINKS_LIST_LOADER, null, this);
. Observera att du kör restartLoader
, och inte initLoader
, eftersom du har olika data som du vill fråga efter.
I din onCreateLoader
, bör du använda filtret som du lagrade som en instansvariabel för selection
.
Lite bakgrund
initLoader
laddar data som laddades i den senaste körningen, om den hade körts tidigare. Det är därför du kallar in initialiseringsmetoden för ditt Fragment/Aktivitet. Detta är praktiskt eftersom du inte behöver begära orienteringsändring.
restartLoader
rensar upp tidigare laddade data så att du får en ny Loader
att arbeta med (sannolikt) olika data.
Om du inte är riktigt säker på vad du fortfarande gör, se till att läsa den här artikeln, som är en mycket bra introduktionsartikel om Loaders med exempelkod som liknar det du vill uppnå. Lastare är ganska gåtfulla till en början, men när du väl fått kläm på det går det smidigt.