问题标签 [android-loader]
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 - 每次附加 Fragment 时是否需要重新初始化 Loader?
我意识到,如果Loader
已经在 a 中初始化Fragment
并且Fragment
已经添加到 中FragmentManager
,那么Loader
onLoadFinished
每次附加片段时都会调用该方法,即使我没有明确调用getLoaderManager().initLoader(0, null, this)
.
这是否意味着一旦 aLoader
被初始化,除非重新创建它,否则我真的不需要再次初始化它Fragment
?
android - Android:无法在 WebView 中加载具有 javascript 文件的简单 html 数据?
在我的项目中,我正在使用融合图表。我正在制作一个 html 字符串数据并将其加载到 WebView 中,如上面的代码示例所示。当我在浏览器中运行此 html 文件时,它会运行并制作 Fusion 图表,但是当我使用 android Web 视图执行此操作时,它不会加载到我的 Web 视图中。我已经启用了 javascript。我将javascript文件粘贴到资产文件夹中。
android - 带有加载器的 TabsPager 中的多个片段,滑动有效,点击无效
我正在使用ActionBarSherlock 示例进行构建。我有 3 个片段(每个扩展SherlockListFragment
和实现LoaderManager.LoaderCallbacks<>
),每个选项卡中有 1 个。他们都使用装载机。选项卡 2 和 3 使用相同的加载器类(我认为这不是问题)。
我将选项卡添加到我的选项卡中,FragmentPagerAdapter
其中包含对不同片段的类引用,如果需要,还包括捆绑包。当我的应用程序启动并显示选项卡 0 时,getItem inFragmentPagerAdapter
通过创建它们的片段来准备选项卡 0 和选项卡 1。选项卡 2 尚未创建。当我滑动到选项卡 1 时,会加载选项卡 2。当我再次滑动时,选项卡 2 正确显示。
当我从 tab 0 单击到 tab 2 时,会出现问题。getItem
确实创建了片段,并且加载器开始了它的doInBackground
处理,但是选项卡 2 的片段永远不会在 onLoadFinished 中获取数据,因此与不确定的进度条保持一致。
之前发生了一些奇怪的事情。如果我单击,选项卡 2onLoadFinished
将从选项卡 0 的加载器接收数据。当我将每个选项卡的片段加载器更改为使用不同的 ID 时(我认为即使它们具有相同的 ID,它们也不应该发生冲突),问题就消失了。例如:getLoaderManager().initLoader(0, null, this)
,getLoaderManager().initLoader(1, null, this)
等。我不确定这是否只是说明我对装载机或其他东西的无知。
我的主要问题是,我可以强制FragmentPagerAdapter
一次加载所有标签吗?即使这样做也可能不会完全消除我的代码中的这个错误。
第二个问题:当我四处滑动并单击刷新(请参阅下面的代码以了解其作用)时,操作栏中的刷新按钮最终会消失。有什么想法吗?
MainActivity(非常类似于链接的 ABS 示例):
Tab0 片段(与其他片段非常相似,因此我将省略其他片段):
Tab0 加载器(与其他加载器非常相似,因此我将省略其他加载器):
适配器非常基本,我相信它们不是问题。如果有人问我可以提供更多代码,但我认为这已经足够了。 提前感谢您的帮助。
更新:
当我简单地替换FragmentPagerAdapter
它FragmentStatePagerAdapter
时。我看到它在FragmentPagerAdapter getItem is not called中引用。我的代码和使用有什么问题FragmentPagerAdapter
?
android - CursorLoader 连接到错误的 ContentProvider
问题
CursorLoader 实例化似乎使用了先前 CursorLoader 的 URI,而不是作为参数传入的 URI。
给出以下错误:
课程
- DeckIndex.java - 负责查询数据库“甲板”表并返回甲板的游标数组。
- DeckShow.java - 负责查询数据库“flashcard”表并返回一个Cursor数组的flashcards。
- AducardOpenHelper.java - 负责数据库的 DDL 和创建。
- DecksProvider - 负责“甲板”表的 CRUD
- FlashcardsProvider - 负责“flashcard”表的 CRUD
解释
正在传递的 URI:
我知道这是由 DecksProvider 而不是 FlashcardsProvider 处理的。
以及 FlashcardsProvider 中的 UriMatcher:
我认为重要的是要提到首先调用 DecksIndex 类,因此对 DeckProvider 的调用成功完成。直到我在调用 DeckShow onCreate 方法时单击其中一个牌组(它启动了 DeckShow 活动):
并发生错误。
LoaderManager 初始化行:
甲板索引.java
甲板秀.java
感谢您查看我的问题,如果有任何其他详细信息或代码有帮助,请告诉我!
android - 加载更多 - 只有创建视图层次结构的原始线程才能接触其视图
我的应用程序使用 GridView 从 JSON 获取图像。一切都很好,但现在我想通过单击按钮来加载更多内容。我按照本教程Android ListView 和 Load More Button进行操作。当我关注它时,我使用runOnUiThread(new Runnable() {
public void run() { } }
了doInBackground
但它错误NetworkOnMainThreadException
我知道这是因为我在 UI 线程上运行它。但是当我删除时runOnUiThread...
,它也会出错
我该如何解决这个错误?完整来源http://pastie.org/5659969
首次加载时的 AsyncTask
使用按钮单击以加载更多时的 AsycTask
android - Android Loaders 生命周期,或者:onStopLoading() 是否总是在 onReset() 之前调用?
有没有直接在它之前onReset()
调用而被调用的情况?onStopLoading()
更一般地说,我试图弄清楚加载器的生命周期,a-la活动生命周期图表,以及哪个onSomething()
在 Activity/Fragment 的生命周期状态的哪个状态中运行。
android - 来自 ContentProvider 的 SimpleCursorAdapter 中的 IllegalStateException“尝试重新打开已经关闭的对象”
我在 s 中有一系列ListView
对象,这些对象由 a从活动中获取 aFragment
填充。据我了解,所有数据库和关闭操作都完全由和处理,因此我在任何代码中都没有调用任何内容。CursorAdapter
Cursor
LoaderManager
Cursor
LoaderManager
ContentProvider
.close()
但是,有时我会遇到此异常:
我将一些日志代码放入我的日志中,CursorAdapter
告诉我何时或正在被调用,似乎在给定适配器的第一次发生这种情况,而对于另一个适配器则发生了很多s。当用户在应用程序中导航了很多之后,也会发生这种情况。getView(...)
getItem(...)
getItemId(...)
getView(...)
getView(...)
这让我想知道Cursor
适配器的 是否保留在 中CursorAdapter
,但被ContentProvider
或错误关闭Loader
。这可能吗?我应该CursorAdapter
根据应用程序/活动/片段生命周期事件进行任何内务管理吗?
ContentProvider
查询方法:
典型LoaderCallbacks
:
CursorAdapter
构造函数:
我已经阅读了这个问题,但不幸的是它没有得到我的问题的答案,因为它只是建议使用 a ContentProvider
,我就是这样。
IllegalStateException:尝试重新打开已经关闭的对象。SimpleCursorAdapter 问题
刚刚曝光的重要新信息
我在项目的其他地方发现了一些其他代码,它们没有使用Loader
s 并且没有正确管理它Cursor
的 s。我刚刚切换了这段代码以使用与上面相同的模式;但是,如果这可以解决问题,则表明Cursor
项目的某个部分中未受管理的人可能会在其他地方杀死受适当管理的人。
停在附近。
新信息的结果
那并没有解决它。
新理念
即可能是的,我应该对CursorAdapter
(或者更确切地说CursorLoader
符合生命周期事件)进行内务处理。
新理念的成果
没有。
以前的想法
一旦我添加了一个小调整,结果就可以工作了!但是它太复杂了,我可能应该重写整个问题。
android - 除了过早调用 cursor.close() 之外,还有什么会导致 StaleDataException?
我目前正在大量修改/重写一个Android应用程序,并且我看到了一个非常偶然的崩溃,如下所示:调用了一个CursorAdapter
方法,它调用了AbstractWindowedCursor#checkPosition()
,并且:
问题是,我们没有关闭任何Cursor
s。我们所有的Cursor
s 都来自CursorLoader
s ,反过来又是由 a 产生的ContentProvider
。我们从 中Cursor
分别传递到每个中,我们在 中注册通知,我们从每个中通知,并且...简而言之,我找不到任何理由说明 a在使用时会关闭。CursorAdapter
LoaderCallbacks
Cursor
ContentProvider
ContentResolver
insert(...)
delete(...)
update(...)
Cursor
那么: a 的其他原因是StaleDataException
什么?
android - 异步 ListFragment 的正确方法
我对 Android 还是很陌生,我发现很难找出完成以下任务的正确/最佳方法:
我正在使用 ActionBarSherlock 拥有一组选项卡,每个选项卡都加载一个片段。其中之一是 ListFragment(实际上是 SherlockListFragment)。我一开始只是使用一个新线程来加载列表,一切看起来都很好,直到您在列表加载之前切换到不同的选项卡。然后它在 SetListShown(true) 失败,因为我猜该片段不活动。
我想要发生的是,当第一次打开选项卡时,它开始加载数据,显示标准进度指示器,然后它完成了显示列表并删除了进度指示器。如果在加载数据时选项卡发生更改,则在再次打开该选项卡时应该可见。
如果有一种简单的方法可以实现我错过的这一点,那就太好了!Android 根本不可能,我也想知道,所以我可以停止尝试 ;-)
我已经阅读了很多关于 AsyncTask、AsyncTaskLoader、IntentService 等的内容,但我完全不清楚我需要使用什么,而且其中任何一个都可以真正实现我想要的!
仅供参考,我正在使用 mono for android 和支持 v2.3+ 的兼容性包,但希望可以翻译任何 java 示例等。
提前谢谢了!罗宾