Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 用Dagger在FragmentPagerAdapter中实现MVP_Android_Android Fragments_Tabs_Mvp_Fragmentpageradapter - Fatal编程技术网

Android 用Dagger在FragmentPagerAdapter中实现MVP

Android 用Dagger在FragmentPagerAdapter中实现MVP,android,android-fragments,tabs,mvp,fragmentpageradapter,Android,Android Fragments,Tabs,Mvp,Fragmentpageradapter,我试图用MVP建立一个选项卡式布局,但遇到了一些困难。我将其用作一般引用,它们将引用存储到每个活动中的每个演示者。然而,在我的选项卡式布局中,我使用一个活动,每个选项卡有一个片段(通过FragmentPagerAdapter交付)。片段被实例化,其呈现者被注入FragmentPagerAdapter的getItem()方法中。问题是,当应用程序旋转时,我的片段会自动重建,但不会让演示者返回,然后由于NPE而崩溃。我一直将演示者作为字段存储在activity或FragmentPagerAdapte

我试图用MVP建立一个选项卡式布局,但遇到了一些困难。我将其用作一般引用,它们将引用存储到每个活动中的每个演示者。然而,在我的选项卡式布局中,我使用一个活动,每个选项卡有一个片段(通过FragmentPagerAdapter交付)。片段被实例化,其呈现者被注入FragmentPagerAdapter的getItem()方法中。问题是,当应用程序旋转时,我的片段会自动重建,但不会让演示者返回,然后由于NPE而崩溃。我一直将演示者作为字段存储在activity或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不能为我这样做的话)?

你有没有找到一个很好的方法?