Я нашел Cra sh на Fabri c, который пытается повторно открыть уже закрытый объект: SQLiteDatabase. Я пытаюсь выяснить значение, но соединение с базой данных закрыто до получения значений.
Мой код:
@Override
public synchronized void getAllCurrencies(final GetCurrenciesCallback callback) {
AsyncTask.execute(new Runnable() {
@Override
public void run() {
List<Forex> currencies = new ArrayList<>();
SQLiteDatabase db = mDbHelper.getReadableDatabase();
Cursor c = db.query(
RecentlyUsedCurrencyPersistenceContract.CurrencyEntry.TABLE_NAME, null, null, null, null, null, null);
Forex currency;
try {
if (c != null && c.getCount() > 0) {
while (c.moveToNext()) {
String id = c.getString(c.getColumnIndexOrThrow(RecentlyUsedCurrencyPersistenceContract.CurrencyEntry.COLUMN_NAME_ENTRY_ID));
String name = c.getString(c.getColumnIndexOrThrow(RecentlyUsedCurrencyPersistenceContract.CurrencyEntry.COLUMN_NAME_CURRENCY_NAME));
String rate = c.getString(c.getColumnIndexOrThrow(RecentlyUsedCurrencyPersistenceContract.CurrencyEntry.COLUMN_NAME_CURRENCY_RATE));
String symbol = c.getString(c.getColumnIndexOrThrow(RecentlyUsedCurrencyPersistenceContract.CurrencyEntry.COLUMN_NAME_CURRENCY_SYMBOL));
String zeroDecimals = c.getString(c.getColumnIndexOrThrow(RecentlyUsedCurrencyPersistenceContract.CurrencyEntry.COLUMN_NAME_ZERO_DECIMALS));
currency = new Forex();
currency.setLabel(name);
currency.setTo(id);
currency.setRate(rate);
currency.setRecent(true);
currency.setSymbol(symbol);
currency.setZero_decimals(Boolean.valueOf(zeroDecimals));
currencies.add(currency);
}
}
if (c != null) {
c.close();
}
if (currencies.size() > 0) {
callback.onCurrenciesLoaded(currencies);
} else {
callback.onDataNotAvailable();
}
} catch (IllegalStateException e) {
callback.onDataNotAvailable();
}
Logr.i("Recent Currencies list compares " + currencies.toString() + " Items");
}
});
}
Я пытался это сделать, но, насколько я понимаю, где этот вопрос.