作者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://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1411608485.A.4B7.html
※ 编辑: htury (211.78.161.185), 09/25/2014 09:36:49
1F:推 zxc190: 再replace fragment前把前一个放到stack里面@@? 09/25 13:59
3F:→ htury: 不是,addOnBackStack是加进倒回stack的记忆 09/25 15:38
4F:推 zxc190: 如果是fragment里面又有fragment 09/25 16:27
5F:→ zxc190: getChildFragmentManager() 09/25 16:27
6F:→ zxc190: 移 好像又不是这个问题XDD 09/25 16:27
※ 编辑: htury (211.78.161.185), 09/25/2014 17:14:47