簡體   English   中英

避免在方向改變時重新創建片段

[英]Keeping an activity from re-creating my fragments on orientation change

我有一個活動,其中包含一個片段,當該片段上的某些內容被單擊時,我將該片段替換為另一個片段。 如果設備在第二個片段中旋轉,則onCreate將被調用以進行活動,並再次重新創建第一個片段。

當設備旋轉時,如何阻止onCreate被調用?

在我的清單上我有這個

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

據我了解,向該活動添加configChanges可以防止該活動被破壞和重新創建,但是onCreate仍然被調用並弄亂了片段。

我也嘗試將setRetainInstance()放入片段中, 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);
    }

這將確保您在旋轉后使用先前存在的片段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM