我有一个保存片段的活动,当单击该片段上的某个内容时,我将用另一个片段替换该片段。如果设备在第二个片段中与一起旋转,则会为活动调用onCreate,并再次重新创建第一个片段。
如何在设备旋转时阻止调用oncreate?
在我的名单上我有这个

<activity android:name="CalActivity" android:configChanges="orientation|keyboardHidden"/>

据我所知,将configchanges添加到该活动中可防止销毁和重新创建该活动,但oncreate仍会被调用并弄乱片段。
我也试着在片段中加入setRetainInstance(),但这也没有帮助
如果设备没有像他们应该的那样旋转碎片,我不想让这成为一个只面向一个方向的活动,这比实际解决问题更像是一个黑客。
我还能做什么?
编辑:
这就是我创建片段的方式
Fragment miniMonthFrag = new MonthByWeekFragment(System.currentTimeMillis(), false);
ft.replace(R.id.cal_frame, miniMonthFrag).commit();

最佳答案

代替替换使用:

 FragmentManager fm = getFragmentManager();
    if (fm.findFragmentById(R.id.cal_frame) == null) {
        mFragment = new MonthByWeekFragment(System.currentTimeMillis(), false);
        fm.beginTransaction().add(R.id.cal_frame, mFragment ).commit();
    } else {
        mFragment = (MonthByWeekFragment) fm.findFragmentById(R.id.cal_frame);
    }

这将确保在旋转之后使用预先存在的片段。

10-07 19:18
查看更多