片段ViewState在onStart中恢复了吗?

acc*_*c15 8 android

当方向更改时,片段viewState仅在中恢复onStart.之后onAttach,onCreateView,onViewCreatedonActivityCreated甚至之后onCreate.为什么?这太晚了.

我需要根据一些TextView值将db查询结果填充到ListView.目前我尝试这样做onViewCreated.但是此步骤未恢复视图状态.

我能早点强制恢复吗?或者如何克服这个问题?请问任何想法.

PS:我使用actionbarsherlock和依赖android支持-v4 r7库

PS2:如果我将加载数据onStart然后它将在片段恢复之后执行额外的查询onStop(我可以通过添加一些布尔值来解决这个问题isLoaded- 但这不是最佳解决方案).

acc*_*c15 12

在Android API> = 17(Android 4.2 Jelly Beans)中有一种方法: public void onViewStateRestored (Bundle savedInstanceState)

文档中提到的之前onStart()和之后调用.onActivityCreated()

在Android API <17中,没有这样的方法.但有两种解决方案:

  1. 初始化时不要依赖视图状态Fragment,并将所有必需的初始化状态保存为Fragment状态(即覆盖Fragment#onSaveInstanceState()).稍后您可以恢复片段状态onCreate(),onCreateView()onViewCreated().
  2. onStart()按照相关规定执行初始化.