问题标签 [android-loadermanager]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 使用带有持有者模式的 SimpleCursorAdapter 的 ListFragment
我正在实现 a ListFragment
from aViewPager
并使用ListAdapter
扩展SimpleCursorAdapter
并尝试保持在转换为使用LoaderManager
自定义光标和CommonsWare.loaderex
JAR 之前使用的相同 Holder Pattern。一切似乎都很好地融合在一起,除了我将LoaderManager
. 主要是因为我不确定从 加载/刷新列表中的数据所需的回调,并且我想避免在内存中出现巨大的光标,因为整个表单在. 让表单的每个部分在自己的加载器中管理自己的数据似乎没问题。ListFragment
FragmentActivity
ViewPager
FragmentActivity
ViewPager
当我构建类似于演示项目的适配器初始化设置时(请参见下面的代码片段)
这些getSupportLoaderManager()
标志是一个错误,我不知道为什么。这是片段的完整代码(我知道这是一个蹩脚的电话号码管理器)。关于我做错了什么的任何指导都会很棒。
android - 使用 CursorLoader 查询 SQLite DB 并填充 AutoCompleteTextView
我有一个我想查询的 SQLite 数据库。我想通过 ICS 定位 Android 2.2。我遇到了这篇关于如何做到这一点的文章,但它使用了不推荐使用的代码(不异步查询,而是在 UI 线程上)。从那以后,我读到我可以使用CursorLoader
withLoaderManager
来执行此任务,这是首选的最佳实践方式(以免使 UI 线程陷入困境)。
问题是找到一个简洁的例子来向我解释如何做到这一点。1) 加载数据库,2) 查询它,3) 使用结果填充 AutoCompletetextBox 列表视图。
有这样的例子吗?
android - 在 Activity 中初始化 Loader
我目前正在尝试学习如何使用加载器,但在我的活动中启动加载器时遇到了麻烦。
但是 Eclipse 给出了一个错误说明:
LoaderManager 类型中的方法 initLoader(int, Bundle, LoaderManager.LoaderCallbacks) 不适用于参数 (int, null, ActivitySwitchActivity)
谁能帮忙解决我哪里出错了?
android - ActionBarSherlock + Maps + Loaders = java.lang.NoClassDefFoundError
编辑:有关详细的操作方法,请查看我的答案。
我这两天一直在苦苦挣扎,希望有人能帮忙。
我正在尝试将最新的 ActionBarSherlock (4.0) 与 MapView 一起使用。我知道片段有问题,但我在这个活动中不需要它们。但是我需要加载器,而且看来,要使用加载器,我也必须扩展 FragmentActivity。没问题,我想,我们有来自 Pete Doyle的android-support-v4-googlemaps 。正如许多 SO 线程和 Google 组所建议的那样,我使用 android-support-v4-googlemaps JAR(实际上是 android-support-v13-r7-googlemaps.jar)而不是 android-support-v4.jar 构建 ABS。然后我将它用作我的项目的库。
现在,我想以这种方式进行活动:
public class BananoutMapActivity extends SherlockFragmentActivity implements LoaderCallbacks<ArrayList<EventItem>>{
问题:
它可以编译,但会引发运行时错误:E/AndroidRuntime(29159): java.lang.NoClassDefFoundError: ndl.klimczak.bananout.BananoutMapActivity
我已经三重检查的事情:
- ActionBarSherlock 库项目和我的项目都针对 Google API 4.0.3
- 我有
<uses-library android:name="com.google.android.maps" />
并且我有它在应用程序标签中。 - 我的项目的构建路径中也有相同的 android-support-v13-r7-googlemaps.jar
- 我已经
.BananoutMapActivity
在我的清单中声明
有趣的是:
当我在 ICS 模拟器上运行它时它可以工作(错误出现在 2.* 模拟器和我的 2.3.7 设备上),在 Honeycomb 上它很可能也可以工作,我猜这是使用 ACL 的问题
当我删除
implements LoaderCallbacks<ArrayList<EventItem>>
它也可以工作的部分时,但是这样我就无法使用 LoaderManager
为什么会出现 NoClassDefFoundError 错误以及如何让加载程序在我的 MapCapableSherlockEnabledFragmentActivity 中工作?
android - 用于在多个活动/片段中重用的全局加载器 (LoaderManager)
我想达到的目标:
我有两个不同的片段。我希望他们都以两种形式(列表和地图)显示相同的数据。我希望他们分享一个装载机(AsyncTaskLoader
特别是)。一切正常,但装载程序没有被重复使用。创建另一个并加载数据两次。
我所做的:
在Fragment
我使用的 sLoaderManager lm = getActivity().getSupportLoaderManager();
中,我实现LoaderCallbacks<ArrayList<Item>>
了所需的方法。在两者中我都使用lm.initLoader(0, args, this);
.
但是当我输出时,lm.toString()
它们似乎是两个不同的加载器。并且数据被下载了两次。
如何从不同于启动它的 Activity/Fragment 重新连接到同一个 Loader?
这应该是可能的,因为上下文无论如何都附加到 Loader 上onCreate()
,例如在配置更改时。
android - ICS 中的 SimpleCursorAdapter
我的项目中需要一个 SimpleCursorAdapter。我在 2.3 版本中为此编写了代码。但我无法在 ICS 中添加它。它显示SimpleCursorAdapter(context, layout, c, from, to)
已弃用,而新的是SimpleCursorAdapter(context, layout, c, from, to, flags)
.
其中包含一个新参数“flags”。我应该在标志的位置添加什么?这说明什么?
android - 带有由 LoaderManager 管理的自定义适配器的 AlphabetIndexer
我正在尝试AlphabetIndexer
使用这样的自定义适配器来实现
我的 ContactsCursorAdapter 类扩展SimpleCursorAdapter
和实现SectionIndexer
,我正在使用 aLoaderManager
来管理我的适配器的光标,所以我已经覆盖了swapCursor()
上面示例的第二个答案所示的方法。
但是,如果我将列表视图设置为 fastScrollEnabled = true,则会出现此错误
getListView().setFastScrollEnabled(true);
在我的类 ContactsCursorLoaderListFragment 中,它扩展ListFragment
并实现了 LoaderManager.LoaderCallbacks 。
这是堆栈跟踪:
在调用该setFastScrollEnabled()
方法后,它会调用自定义适配器的getSections()
方法,这是它崩溃的地方。
如果我评论这个setFastScrollEnabled()
电话,那么它不会出错,但我没有看到AlphabetIndexer
工作。
这是否需要以不同的方式实现,因为我的自定义适配器设置在 aListFragment
而不是 a中ListActivity
?
有没有人有关于如何使这一切工作的建议?
java - 调用 initLoader() 后 Loader 不启动?
我有一个片段,并希望在单击按钮时启动一个加载器:
单击按钮后,我可以看到调用了回调的 onCreateLoader 方法,但创建的加载程序从未真正启动。我们是否需要在加载器本身上调用 forceLoad() 才能让它真正启动?没有一个示例帖子这样做,
谢谢
android - 具有多线程的Android sqlite
我正在使用sqlite
. 有许多活动和一项服务。我从多个线程中使用数据库。它在 中完美Android 2.X
运行,但是一旦我在其中运行Android 3.X
它总是会引发此错误并且Force Close
:
任何人都知道它为什么会发生以及如何解决它?
我在互联网上进行了研究,大多数人建议:
- 仅对应用程序使用一个 DB 连接。如何保证?我想为服务和活动共享数据库连接。我应该通过创建一个公共静态数据库变量来做到这一点吗?
- ContentProvider - 我在代码中使用了复杂的 SQL 语句(例如加入几个表、临时表)。是否可以在 ContentProvider 中运行这些复杂的 SQL 语句?
谢谢大家。最后,(1)对我来说很好。但是我还是想知道为什么Android 2.X没有这个问题。
java - 用 SimpleAdapterCursor swapCursor() 交换光标
我在我的应用程序中设置了一个内容提供程序并使用 LoaderManager 加载数据,但是我在将光标交换到光标适配器时遇到了麻烦,我测试了光标是否正在返回数据并且它正在返回!追踪问题,似乎ad.swapCursor(cursor);
是问题所在。
你认为我在这里做错了什么?它可能是内容提供者吗?
谢谢