Таким образом, кажется следующая модель в классе под названием ActivityClass:Начиная второй AsyncTaskLoader От первого One
private static class AsyncTaskLoader1 extends AsyncTaskLoader<E> {
........
}
private static class AsyncTaskLoader2 extends AsyncTaskLoader<F> {
.........
}
private class LoaderManager1 extends LoaderManager.LoaderCallbacks<E> {
private void onLoadFinished(AsyncTaskLoader1 loader, E data) {
//do stuff with data
//ok, now we need to start a asynchronous data load based on info we got back from 1st
ActivityClass.this.getLoaderManager().init(0, null, new LoaderManager2()).forceLoad();
}
}
private class LoaderManager2 extends LoaderManager.LoaderCallbacks<D> {
//...
}
Это приводит к следующему за исключением времени выполнения, который выглядит примерно так:
java.lang.ClassCastException: E cannot be cast to F
at com.mycompany.myapp.ActivityClass$LoaderManager2.onLoadFinished
Я полагаю, потому что я вызываю второй загрузчик с первого. Если это невозможно, я предполагаю, что есть способ сообщить Деянию, что данные были загружены, чтобы он мог запустить новый AsyncTaskLoader из потока пользовательского интерфейса, но я не знаю, как это сделать. Может ли кто-нибудь просветить меня? Благодарю.
Помогло ли бы downvoter объяснить, почему это плохой вопрос? – thatidiotguy