Esempio n. 1
0
  private void dispatchRestoreInstanceState(Bundle state) {
    SparseArray<Parcelable> presenterStates = state.getSparseParcelableArray(PRESENTER_KEY);

    if (presenterStates == null || mPresenters.isEmpty()) return;

    for (WeakReference<MenuPresenter> ref : mPresenters) {
      final MenuPresenter presenter = ref.get();
      if (presenter == null) {
        mPresenters.remove(ref);
      } else {
        final int id = presenter.getId();
        if (id > 0) {
          Parcelable parcel = presenterStates.get(id);
          if (parcel != null) {
            presenter.onRestoreInstanceState(parcel);
          }
        }
      }
    }
  }
Esempio n. 2
0
  private void dispatchSaveInstanceState(Bundle outState) {
    if (mPresenters.isEmpty()) return;

    SparseArray<Parcelable> presenterStates = new SparseArray<Parcelable>();

    for (WeakReference<MenuPresenter> ref : mPresenters) {
      final MenuPresenter presenter = ref.get();
      if (presenter == null) {
        mPresenters.remove(ref);
      } else {
        final int id = presenter.getId();
        if (id > 0) {
          final Parcelable state = presenter.onSaveInstanceState();
          if (state != null) {
            presenterStates.put(id, state);
          }
        }
      }
    }

    outState.putSparseParcelableArray(PRESENTER_KEY, presenterStates);
  }