作者htury (冰點)
看板AndroidDev
標題[問題] 使用同樣的fragment?
時間Thu Sep 25 09:28:03 2014
我發現為什麼取的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
→ 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