我'm trying to set up a tabbed layout with MVP and having some difficulties. I' m使用Google's Dagger MVP sample app作为一般参考,并且它们存储每个活动中每个演示者的引用 . 但是,在我的选项卡式布局中,我是'm using one activity with a fragment for each tab (delivered via a FragmentPagerAdapter). The fragments are instantiated and their presenters injected in the FragmentPagerAdapter'的getItem()方法 . 问题是,当应用程序被旋转时,我的片段会自动重建,但不要将演示者存储为活动或FragmentPagerAdapter(谷歌)中的字段,但无论如何都不能正常工作 .

这基本上就是我现在在FragmentPagerAdapter中的做法:

public class MyFragmentPagerAdapter extends FragmentPagerAdapter {

    @Inject MyPresenter mMyPresenter;

    @Override
    public Fragment getItem (int position){
    switch (position) {
        case MY_FRAGMENT_INDEX:
            return createMyFragment;
        case OTHER_FRAGMENT_INDEX:
            return createMyOtherFragment;
        default:
            return null;
    }

    private Fragment createMyFragment() {
        MyFragment myFragment = MyFragment.newInstance();
        // make the presenter
        DaggerMyPresenterComponent.builder()
                .MyModelComponent(
                        ((MyApplication) getApplication()).getMyModelComponent())
                .MyPresenterModule(new MyPresenterModule(myFragment)).build()
                .inject(this);
        return myFragment;
    }

处理这种情况的好架构是什么?我应该在哪里保留对演示者的引用(如果有的话),以及如何管理他们的实例化和重新创建(如果FragmentPagerAdapter不会为我做这些)?