看板 AndroidDev 關於我們 聯絡資訊
我發現為什麼取的null了 因為getChildFragmentManager 這時候是FragmentB的manager而不是FragmentA的 然後我先設個static 指向FragmentA 也順利取的FragmentA上的CalendarFragment 想要放到FragmentB上,這時候有exception java.lang.IllegalStateException: Can't change container ID of fragment CalendarFragment {4237c460 #0 id=0x7f060035 FragmentB}: was 2131099701 now 2131099691 有大大有解嗎? 以下舊文 ================ 想請問如何在同一個activity 使用同一個fragment 類似airbnb的日曆點選 http://ppt.cc/wXLp 然後進到另一個fragment後又要取的同樣的fragment 嵌入在別的fragment 類似airbnb點選dialogFragment的日曆也嵌入在裡面 然後有顯示剛剛選的日期 http://ppt.cc/j9j~ ------------------- --------------- |Activity |同一個activity |------------------ |-------------- ||FragmentA ||切換成FragmentB ||----------------- ------> ||-------------- |||CalendarFragment |||CalendarFragment |||點選日期後的狀態 |||想取得FragmentA的CalendarFragment ||| |||但是是null ||| |||只好重新new 在塞值 ||| ||| code如下: FragmentManager fm = getChildFragmentManager(); CalendarFragment fragment = (CalendarFragment) fm.findFragmentById(R.id FragmentTransaction ft = fm.beginTransaction(); ft.replace(R.id.layout_fragment, fragment); ft.commit(); 會產生nullPointException 追蹤後fragment是null?? 是因為切換另一個fragment會導致CalendarFragment OnDestroy? 就要在new一個CalendarFragment FragmentManager fm = getChildFragmentManager(); CalendarFragment fragment = (CalendarFragment) fm.findFragmentById(R.id.fragment_calendar_click_view); if (fragment==null || ! fragment.isInLayout()) { fragment = new CalendarFragment(); FragmentTransaction ft = fm.beginTransaction(); ft.replace(R.id.layout_fragment, fragment); ft.commit(); } 但是因為使用new 所以前面點選的日期沒有被記住 可能要用sharedpreference來記住套回來用? 不知道各位先進有其他的方法嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.78.161.185 ※ 文章網址: http://www.ptt.cc/bbs/AndroidDev/M.1411608485.A.4B7.html ※ 編輯: htury (211.78.161.185), 09/25/2014 09:36:49
zxc190: 再replace fragment前把前一個放到stack裡面@@? 09/25 13:59
zxc190: http://ppt.cc/-xOy 09/25 14:04
htury: 不是,addOnBackStack是加進倒回stack的記憶 09/25 15:38
zxc190: 如果是fragment裡面又有fragment 09/25 16:27
zxc190: getChildFragmentManager() 09/25 16:27
zxc190: 移 好像又不是這個問題XDD 09/25 16:27
※ 編輯: htury (211.78.161.185), 09/25/2014 17:14:47