自定义SQLite加载器-监听来自另一个片段/活动的更新



在我的应用程序我有一个SQLIte数据库。我有一个ListView,需要从数据库的数据,所以我想我会给加载器一个尝试。

我有两个片段:

Fragment A -有一个ListView和一个适配器,使用自定义Loader从DB获取数据。

片段B——这是一个"编辑条目"片段,条目被编辑,然后在数据库中更新。

由于片段B不能(也不应该从我的理解)访问片段A中的Loader,编辑片段B中的项目不会更新片段A。

我该如何解决这个问题?这个问题可以用Loaders解决吗?

如果两个片段在同一个Activity中,它们可以访问相同的loader。我认为你的问题是,你是初始化加载器内部的片段,像这样:

getLoaderManager().initLoader(...);

当你应该这样做的时候:

getActivity().getLoaderManager().initLoader(...);

在第二个片段中使用同一行代码访问相同的加载器,并显示要编辑的数据。编辑并更新数据库之后,需要调用forceLoad()(因为没有在自定义加载器中实现观察者),将新数据加载到加载器中:

getActivity().getLoaderManager().getLoader(loaderId).forceLoad();

当你回到第一个片段时,将创建视图层次结构并调用initLoader()(通常在onCreateView()onActivityCreated()中实现),这将直接调用onLoadFinished(),因为加载器已经存在并且已经被第二个片段更新。

最新更新