我们在FragmentViewPager和Fragments中遇到问题。
我们正在使用CursorLoader填充片段中的列表。视图寻呼机由4页组成。
基本上当从一个片段滑动到另一个片段时,它工作得很好,但是一旦我们从片段A的上下文中拉出服务中的数据并滑动到片段B然后C,依此类推,片段中的列表似乎没有加载即空白屏幕,但如果设备的屏幕关闭然后在片段中的列表中显示数据。
在游标加载器的onLoadFinished方法中,我们在每次刷新时重置适配器。
我很难找到解决方案。有什么建议吗?
附加信息,我有时也会收到此堆栈跟踪。
09-21 15:20:44.489:INFO / dalvikvm(21106): Landroid / view / ViewRoot $ CalledFromWrongThreadException;:只有 创建视图层次结构的原始线程可以触及其视图。 09-21 15:20:44.497:INFO / dalvikvm(21106):at android.view.ViewRoot.checkThread(ViewRoot.java:2932)09-21 15:20:44.497:INFO / dalvikvm(21106):at android.view.ViewRoot.requestLayout(ViewRoot.java:629)09-21 15:20:44.501:INFO / dalvikvm(21106):at android.view.View.requestLayout(View.java:8267)09-21 15:20:44.501: INFO / dalvikvm(21106):at android.view.View.requestLayout(View.java:8267)09-21 15:20:44.501: INFO / dalvikvm(21106):at android.view.View.requestLayout(View.java:8267)09-21 15:20:44.501: INFO / dalvikvm(21106):at android.view.View.requestLayout(View.java:8267)09-21 15:20:44.517: INFO / dalvikvm(21106):at android.widget.RelativeLayout.requestLayout(RelativeLayout.java:257) 09-21 15:20:44.517:INFO / dalvikvm(21106):at android.view.View.requestLayout(View.java:8267)09-21 15:20:44.517: INFO / dalvikvm(21106):at android.view.View.requestLayout(View.java:8267)09-21 15:20:44.517: INFO / dalvikvm(21106):at android.view.View.requestLayout(View.java:8267)09-21 15:20:44.517: INFO / dalvikvm(21106):at android.view.View.requestLayout(View.java:8267)09-21 15:20:44.517: INFO / dalvikvm(21106):at android.view.View.requestLayout(View.java:8267)09-21 15:20:44.517: INFO / dalvikvm(21106):at android.view.View.requestLayout(View.java:8267)09-21 15:20:44.517: INFO / dalvikvm(21106):at android.view.View.setFlags(View.java:4641)09-21 15:20:44.517: INFO / dalvikvm(21106):at android.view.View.setVisibility(View.java:3116)09-21 15:20:44.517: INFO / dalvikvm(21106):at android.widget.AdapterView.updateEmptyStatus(AdapterView.java:713) 09-21 15:20:44.517:INFO / dalvikvm(21106):at android.widget.AdapterView.checkFocus(AdapterView.java:697)09-21 15:20:44.517:INFO / dalvikvm(21106):at android.widget.AdapterView $ AdapterDataSetObserver.onInvalidated(AdapterView.java:812) 09-21 15:20:44.525:INFO / dalvikvm(21106):at android.database.DataSetObservable.notifyInvalidated(DataSetObservable.java:43) 09-21 15:20:44.525:INFO / dalvikvm(21106):at android.widget.BaseAdapter.notifyDataSetInvalidated(BaseAdapter.java:54) 09-21 15:20:44.525:INFO / dalvikvm(21106):at android.widget.CursorAdapter $ MyDataSetObserver.onInvalidated(CursorAdapter.java:391) 09-21 15:20:44.525:INFO / dalvikvm(21106):at android.database.DataSetObservable.notifyInvalidated(DataSetObservable.java:43) 09-21 15:20:44.525:INFO / dalvikvm(21106):at android.database.AbstractCursor.deactivateInternal(AbstractCursor.java:89) 09-21 15:20:44.525:INFO / dalvikvm(21106):at android.database.AbstractCursor.close(AbstractCursor.java:108)09-21 15:20:44.525:INFO / dalvikvm(21106):at android.database.sqlite.SQLiteCursor.close(SQLiteCursor.java:504) 09-21 15:20:44.525:INFO / dalvikvm(21106):at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:594) 09-21 15:20:44.525:INFO / dalvikvm(21106):at dalvik.system.NativeStart.run(原生方法)
谢谢,
阿克沙伊
答案 0 :(得分:0)
我们似乎已经找出了发生这种情况的原因,但是没有真正的解释,也许有人可以详细说明这一点。
来自服务器的响应使用片段中的service + ResultReceiver来通知UI后台httpservice完成在活动中使用时工作正常,但是使用片段从处理程序到UI的任何挂钩导致UI崩溃,好像UI更改是从一个单独的线程进行的,在日志中没有一致的投诉,除了上面的偶然错误。一旦我们在结果接收器中使用处理程序通知UI更改,我们就不再面临这个问题了。
阿克沙伊