2014-09-09 4 views
-1

Таким образом, кажется следующая модель в классе под названием 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 из потока пользовательского интерфейса, но я не знаю, как это сделать. Может ли кто-нибудь просветить меня? Благодарю.

+0

Помогло ли бы downvoter объяснить, почему это плохой вопрос? – thatidiotguy

ответ

0

Так что вопрос в конечном итоге в том, что я проходил такое же число ID аргумент initLoader как для исходного вызова, а тот, в первом LoadManager «ы onLoadFinished метода. Я предполагаю, что это привело к тому, что первый загрузчик был возвращен неверному менеджеру.

Смежные вопросы