使用回调但代码在错误的对象上运行

Using callbacks but code runs on wrong object

我已经为 运行ning 异步(使用并发)HTTP 调用(使用 net)实现了一个回调,当它们完成时,它们调用在调用者中实现的完整回调,这是一个片段来更新桂。在调用完整例程的代码中,我将它包装在一个处理程序和循环程序(使用主循环程序)中,因此完整代码可以 运行 在主线程上,否则我会得到线程异常 b/c 它无法更新图形用户界面。除以下内容外,其他一切似乎都正常,

我有一个 activity 在主要区域使用导航抽屉和片段,它们被替换了。所有其他片段工作正常,在其中一个片段中我有一个视图寻呼机,其中包含更多片段可以刷过。现在在寻呼机中使用单个 class 并以两种不同的方式构建 first/second 在 init 上加载的页面,我传递不同的 init 信息但它进行相同的异步调用并传递 "this" 所以调用知道使用回调来处理 gui 上的响应。但这是两个独立的对象和页面,因此回调应该在正确的对象和页面上完成。 viewpager 预先构建当前页面和下一页的两个对象,但奇怪的是回调仅在第二页上被调用(对于两者)并且滑动到第二页它 loads/inits 正确但第一页没有因为没有回调被触发。

当我将调试代码放入回调中时,第二个对象被调用,而不是第一个。因此,在尚未显示但可以滑动到的第二个对象(第二个视图寻呼机页面)上,两个异步调用 运行。这绝对没有意义,在设置回调时我使用 "this" 所以它应该始终是对象的正确实例而且我不明白第二个 page/object 怎么可能获得所有回调......对象被创建,触发异步调用,为回调传递 "this" 并实现回调接口。

请不要提供有关使用 android 异步的建议,我们不得不这样做的原因有很多,android 文档甚至出于各种原因推荐并发。

我认为这与我正在使用的 handler/looper 代码有关,也许由于 fragments/view 寻呼机以及我如何执行 运行 在主线程代码上......否则我无法解释它所以任何信息将不胜感激。我花了很长时间调试,无法理解可能出了什么问题。

谢谢。

删除了视图寻呼机,而是通过代码重新创建了 viewpager 手动提供的外观。通过使用片段(像其余代码一样)并用每个新片段替换主容器,问题得到解决。所以也许片段中的片段中的片段不好......?

swiping/look 感觉我只是手动重新创建了一个视图寻呼机给的自己。