Onde restaurar o estado do fragmento que está dentro do ViewPager

Versão curta:

Eu tenho uma atividade que tem um ViewPager. O ViewPager possui três fragmentos. Estou armazenando os dados dentro dos fragmentos implementando o Parcelable e armazenando-os dentro do pacote.

Agora, a questão é onde restauro os dados. Estou confuso porque (pelo que sei) o ViewPager está criando uma nova instância do fragmento cada vez que giro a tela. (Uma nova atividade é criada -> novo ViewPager -> novo fragmento). Por favor, corrija-me se estiver errado.

Versão longa:

My ViewPager dentro de MainActivity

ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
viewPager.setAdapter(new ForecastFragmentPageAdapter(getSupportFragmentManager(),
            ForecastActivity.this));
viewPager.setOffscreenPageLimit(2);

My FragmentPagerAdapter

 @Override
public Fragment getItem(int position) {
    if (position == 0) {
        return new NowForecastFragment();
    } else if (position == 1) {
        return new HourlyForecastFragment();
    } else {
        return new DailyForecastFragment();
    }
}

Salvando estado em um dos meus fragmentos

    public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);

    // save data source
    if (nowDataList != null) {
        outState.putParcelableArrayList("savedNowDataList", nowDataList);
    }
}

Desde já, obrigado!

ATUALIZAR:

De acordo com outras soluções postadas para problemas semelhantes, também adicioneisetRetainInstance (true); no onCreateView do meu fragmento. E é assim que estou salvando e restaurando o estado:

    @Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);

    // save data source
    if (nowDataList != null) {
        Log.v("---------------->","saved!");
        outState.putParcelableArrayList("savedNowDataList", nowDataList);
    }
}

e restaurando no onCreateView

 if(savedInstanceState!=null) {
            Log.v("---------------->","restored!");
            nowDataList = savedInstanceState.getParcelableArrayList("savedNowDataList");
            nowForecastAdapter.notifyDataSetChanged();
        }

Eu vejo os dois logs sendo acionados. Por que os dados não estão sendo restaurados?

questionAnswers(2)

yourAnswerToTheQuestion