Android 片段setRetainInstance(真)不工作

Android 片段setRetainInstance(真)不工作,android,android-fragments,Android,Android Fragments,我有一个活动,其中包含许多片段,这些片段根据导航抽屉中选定的项目进行交换。我试图通过在片段上调用setRetainInstancetrue,然后检查onCreate中是否存在该片段,从而在方向更改中保留当前片段。。。。但是,当我尝试在onCreate上获取片段时,该片段总是空的。。。。为了这个,我已经用头撞桌子好几个小时了。有人能发现问题吗 活动的相关部分 在每个片段类中使用setRetainInstanceTrueT 或 对不起,我也应该发布那个代码。除了在我的活动中构建片段时,我已经这样做了

我有一个活动,其中包含许多片段,这些片段根据导航抽屉中选定的项目进行交换。我试图通过在片段上调用setRetainInstancetrue,然后检查onCreate中是否存在该片段,从而在方向更改中保留当前片段。。。。但是,当我尝试在onCreate上获取片段时,该片段总是空的。。。。为了这个,我已经用头撞桌子好几个小时了。有人能发现问题吗

活动的相关部分

在每个片段类中使用setRetainInstanceTrueT


对不起,我也应该发布那个代码。除了在我的活动中构建片段时,我已经这样做了。
public class StartActivity {

    private static final String MAIN_FRAGMENT_TAG = "mainFragment";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_start);

        ...

        if(savedInstanceState != null) {
            Fragment f = getSupportFragmentManager().findFragmentByTag(MAIN_FRAGMENT_TAG);
            if(f == null) {
                // FRAGMENT IS ALWAYS NULL
                switchToModeForPosition(...);
            } else {
                setupActionBarForPosition(...);
            }
        } else {
            // Default to events view
            switchToModeForPosition(0);
        }
    }

    private void switchToModeForPosition(int position) {
        Fragment fragment;
        switch (position) {
            default:
            case 0: //events
                fragment = new EventsByWeekFragment();
                setupActionBarForEvents();
                break;
            case 1: //teams
                fragment = new AllTeamsListFragment();
                setupActionBarForTeams();
                break;
            case 2: //insights
                fragment = new InsightsFragment();
                setupActionBarForInsights();
                break;
            case 3:
                startActivity(new Intent(this, SettingsActivity.class));
                mDrawerLayout.closeDrawer(mDrawerList);
                return;
        }
        fragment.setRetainInstance(true);
        getSupportFragmentManager().beginTransaction().replace(R.id.container, fragment, MAIN_FRAGMENT_TAG).commit();
    }
}
public void onCreated(Bundle savedInstanceState)
        {
            super.onCreated(savedInstanceState);
            setRetainInstance(true);
        }
public void onActivityCreated(Bundle savedInstanceState)
    {
        super.onActivityCreated(savedInstanceState);
        setRetainInstance(true);
    }