【问题标题】:ListFragment and onActivityCreated called twiceListFragment 和 onActivityCreated 调用了两次
【发布时间】:2014-09-25 00:59:35
【问题描述】:

我有一个 listFragment 这是我的 onActivityCreated:

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    if (savedInstanceState != null) {
        utenti=savedInstanceState.getParcelableArrayList("array");
    }else{
        threadutenti= (GetUtenti) new GetUtenti(this.getActivity(), utenti).execute();
    }

当我旋转我的设备时,我首先 saveInstanceState 非空(我明白了),但在 onActivityCreated 被调用后,onActivityCreated 为空!!为什么?我想在 ListFragment 上而不是在我的活动上获取我的对象 utenti..

【问题讨论】:

  • 为什么? - 你确定你没有在 Activity 的某处添加另一个新的 Fragment 实例吗?

标签: android android-fragments


【解决方案1】:

如果您总是在 Activity#onCreate() 回调中创建新片段,则可能会发生这种情况。
如果是真的,请检查this answer。您的 Fragment#onActivityCreated 将被调用两次:

  • 第一次由 FragmentActivity#onStart 调用 mFragments.dispatchActivityCreated() 触发。它将传递保存的实例。
  • 第二次由FragmentActivity#onStart 调用mFragments.execPendingActions() 触发。这次没有保存实例(因为它是为响应新的 Fragment 添加而调用的)。

【讨论】:

    猜你喜欢
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    • 2013-01-21
    • 2012-09-08
    相关资源
    最近更新 更多