Курс 2 урок про использование Room вместе c RxJava
после попытки вызвать getMusicDao().insertAlbums(albums);
в .doOnSuccess(albums -> {
переходит в блок .onErrorReturn(throwable -> {
с ошибкой android.app.Application cannot be cast to com.elegion.myfirstapplication.App
Код где возникает ошибка
ApiUtils.getApiService().getAlbums()
.subscribeOn(
Schedulers.io())
.doOnSuccess(albums -> {
getMusicDao().insertAlbums(albums);
ArrayList<Album> asd = new ArrayList<>();
asd.addAll(getMusicDao().getAlbums());
})
.onErrorReturn(throwable -> {
if (ApiUtils.NETWORK_EXCEPTIONS.contains(throwable.getClass())) {
ArrayList<Album> asd = new ArrayList<>();
asd.addAll(getMusicDao().getAlbums());
return getMusicDao().getAlbums();
} else {
return null;
}
})
.observeOn(AndroidSchedulers.mainThread())
.doOnSubscribe((disposable) -> mRefresher.setRefreshing(true))
.doFinally(() -> mRefresher.setRefreshing(false))
.subscribe(
albums -> {
ArrayList<Album> asd = new ArrayList<>();
asd.addAll(getMusicDao().getAlbums());
mErrorView.setVisibility(View.GONE);
mRecyclerView.setVisibility(View.VISIBLE);
mAlbumAdapter.addData(albums, true);
}, throwable -> {
mErrorView.setVisibility(View.VISIBLE);
mRecyclerView.setVisibility(View.GONE);
});
Код из App:
public class App extends Application {
private DataBase mDatabase;
@Override public void onCreate() {
super.onCreate();
mDatabase = Room.databaseBuilder(getApplicationContext(), DataBase.class, "music_database")
.fallbackToDestructiveMigration()
.build();
}
public DataBase getDatabase() {
return mDatabase;
}
}
метод getMusicDao()
public MusicDao getMusicDao() {
return ((App) getActivity().getApplication()).getDatabase().getMusicDao();
}