问题标签 [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.

0 投票
0 回答
198 浏览

android - 每次附加 Fragment 时是否需要重新初始化 Loader?

我意识到,如果Loader已经在 a 中初始化Fragment并且Fragment已经添加到 中FragmentManager,那么Loader onLoadFinished每次附加片段时都会调用该方法,即使我没有明确调用getLoaderManager().initLoader(0, null, this).

这是否意味着一旦 aLoader被初始化,除非重新创建它,否则我真的不需要再次初始化它Fragment

0 投票
1 回答
2362 浏览

android - Android:无法在 WebView 中加载具有 javascript 文件的简单 html 数据?

在我的项目中,我正在使用融合图表。我正在制作一个 html 字符串数据并将其加载到 WebView 中,如上面的代码示例所示。当我在浏览器中运行此 html 文件时,它会运行并制作 Fusion 图表,但是当我使用 android Web 视图执行此操作时,它不会加载到我的 Web 视图中。我已经启用了 javascript。我将javascript文件粘贴到资产文件夹中。

0 投票
0 回答
1170 浏览

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 加载器(与其他加载器非常相似,因此我将省略其他加载器):

适配器非常基本,我相信它们不是问题。如果有人问我可以提供更多代码,但我认为这已经足够了。 提前感谢您的帮助。

更新:

当我简单地替换FragmentPagerAdapterFragmentStatePagerAdapter时。我看到它在FragmentPagerAdapter getItem is not called中引用。我的代码和使用有什么问题FragmentPagerAdapter

0 投票
1 回答
579 浏览

android - CursorLoader 连接到错误的 ContentProvider

问题

CursorLoader 实例化似乎使用了先前 CursorLoader 的 URI,而不是作为参数传入的 URI。

给出以下错误:

课程

  1. DeckIndex.java - 负责查询数据库“甲板”表并返回甲板的游标数组。
  2. DeckShow.java - 负责查询数据库“flashcard”表并返回一个Cursor数组的flashcards。
  3. AducardOpenHelper.java - 负责数据库的 DDL 和创建。
  4. DecksProvider - 负责“甲板”表的 CRUD
  5. FlashcardsProvider - 负责“flashcard”表的 CRUD

解释

正在传递的 URI:

我知道这是由 DecksProvider 而不是 FlashcardsProvider 处理的。

以及 FlashcardsProvider 中的 UriMatcher:

我认为重要的是要提到首先调用 DecksIndex 类,因此对 DeckProvider 的调用成功完成。直到我在调用 DeckShow onCreate 方法时单击其中一个牌组(它启动了 DeckShow 活动):

并发生错误。

LoaderManager 初始化行:

甲板索引.java

甲板秀.java

感谢您查看我的问题,如果有任何其他详细信息或代码有帮助,请告诉我!

0 投票
1 回答
1582 浏览

android - 加载更多 - 只有创建视图层次结构的原始线程才能接触其视图

我的应用程序使用 GridView 从 JSON 获取图像。一切都很好,但现在我想通过单击按钮来加载更多内容。我按照本教程Android ListView 和 Load More Button进行操作。当我关注它时,我使用runOnUiThread(new Runnable() { public void run() { } }doInBackground但它错误NetworkOnMainThreadException我知道这是因为我在 UI 线程上运行它。但是当我删除时runOnUiThread...,它也会出错

我该如何解决这个错误?完整来源http://pastie.org/5659969

首次加载时的 AsyncTask

使用按钮单击以加载更多时的 AsycTask

0 投票
1 回答
573 浏览

android - Android Loaders 生命周期,或者:onStopLoading() 是否总是在 onReset() 之前调用?

有没有直接在它之前onReset()调用而被调用的情况?onStopLoading()

更一般地说,我试图弄清楚加载器的生命周期,a-la活动生命周期图表,以及哪个onSomething()在 Activity/Fragment 的生命周期状态的哪个状态中运行。

0 投票
0 回答
96 浏览

android - 如何异步绑定 ArrayList to a ListView?

I'm trying to bind some data to a ListView but instead of being data direct from the tables of a database I have already worked data. So what happens is that I do a query, do some calculations and

I'm trying to bind some data to a ListView but instead of being data direct from the tables of a database I have already worked data. So what happens is that I do a query, do some calculations and populate an ArrayList and then need to have this data binded to an ListView.

What I thought at first was having this query and calculations inside the onCreateLoader so every time my database changed it would be notified and my array would be repopulated followed by the refresh of the ListView.

My problem is being the implementation of the necessary changes in the Loader and the ArrayAdapter. The Loader I'm used to is the CursorLoader + a SimpleCursorAdapter so I can only use Cursors Objects.

How can I proceed? Where should I look for a solution of this kind?

Thanks


If your path has spaces, you will need to encapsulate the path in double quotes quotes. You may need to put a double quote before StartupPath and after .rpt

0 投票
2 回答
3730 浏览

android - 来自 ContentProvider 的 SimpleCursorAdapter 中的 IllegalStateException“尝试重新打开已经关闭的对象”

我在 s 中有一系列ListView对象,这些对象由 a从活动中获取 aFragment填充。据我了解,所有数据库和关闭操作都完全由和处理,因此我在任何代码中都没有调用任何内容。CursorAdapterCursorLoaderManagerCursorLoaderManagerContentProvider.close()

但是,有时我会遇到此异常:

我将一些日志代码放入我的日志中,CursorAdapter告诉我何时或正在被调用,似乎在给定适配器的第一次发生这种情况,而对于另一个适配器则发生了很多s。当用户在应用程序中导航了很多之后,也会发生这种情况。getView(...)getItem(...)getItemId(...)getView(...)getView(...)

这让我想知道Cursor适配器的 是否保留在 中CursorAdapter,但被ContentProvider或错误关闭Loader。这可能吗?我应该CursorAdapter根据应用程序/活动/片段生命周期事件进行任何内务管理吗?

ContentProvider查询方法:

典型LoaderCallbacks

CursorAdapter构造函数:

我已经阅读了这个问题,但不幸的是它没有得到我的问题的答案,因为它只是建议使用 a ContentProvider,我就是这样。

IllegalStateException:尝试重新打开已经关闭的对象。SimpleCursorAdapter 问题

刚刚曝光的重要新信息

我在项目的其他地方发现了一些其他代码,它们没有使用Loaders 并且没有正确管理它Cursor的 s。我刚刚切换了这段代码以使用与上面相同的模式;但是,如果这可以解决问题,则表明Cursor项目的某个部分中未受管理的人可能会在其他地方杀死受适当管理的人。

停在附近。

新信息的结果

那并没有解决它。

新理念

即可能是的,我应该CursorAdapter(或者更确切地说CursorLoader符合生命周期事件)进行内务处理。

新理念的成果

没有。

以前的想法

一旦我添加了一个小调整,结果就可以工作了!但是它太复杂了,我可能应该重写整个问题。

0 投票
2 回答
1248 浏览

android - 除了过早调用 cursor.close() 之外,还有什么会导致 StaleDataException?

我目前正在大量修改/重写一个Android应用程序,并且我看到了一个非常偶然的崩溃,如下所示:调用了一个CursorAdapter方法,它调用了AbstractWindowedCursor#checkPosition(),并且:

问题是,我们没有关闭任何Cursors。我们所有的Cursors 都来自CursorLoaders ,反过来又是由 a 产生的ContentProvider。我们从 中Cursor分别传递到每个中,我们在 中注册通知,我们从每个中通知,并且...简而言之,我找不到任何理由说明 a在使用时会关闭。CursorAdapterLoaderCallbacksCursorContentProviderContentResolverinsert(...)delete(...)update(...)Cursor

那么: a 的其他原因是StaleDataException什么?

0 投票
1 回答
241 浏览

android - 异步 ListFragment 的正确方法

我对 Android 还是很陌生,我发现很难找出完成以下任务的正确/最佳方法:

我正在使用 ActionBarSherlock 拥有一组选项卡,每个选项卡都加载一个片段。其中之一是 ListFragment(实际上是 SherlockListFragment)。我一开始只是使用一个新线程来加载列表,一切看起来都很好,直到您在列表加载之前切换到不同的选项卡。然后它在 SetListShown(true) 失败,因为我猜该片段不活动。

我想要发生的是,当第一次打开选项卡时,它开始加载数据,显示标准进度指示器,然后它完成了显示列表并删除了进度指示器。如果在加载数据时选项卡发生更改,则在再次打开该选项卡时应该可见。

如果有一种简单的方法可以实现我错过的这一点,那就太好了!Android 根本不可能,我也想知道,所以我可以停止尝试 ;-)

我已经阅读了很多关于 AsyncTask、AsyncTaskLoader、IntentService 等的内容,但我完全不清楚我需要使用什么,而且其中任何一个都可以真正实现我想要的!

仅供参考,我正在使用 mono for android 和支持 v2.3+​​ 的兼容性包,但希望可以翻译任何 java 示例等。

提前谢谢了!罗宾