问题1:
FragmentTransaction replace (int containerViewId, Fragment fragment)
为何老是不成功A1:根据api doc。containerViewId应该是一个ViewGroup。所以,请确定你的第一个变量是传入一个ViewGroup(例如LinearLayout,RelativeLayout,FrameLayout等等,而不能是TextView,ImageView等等)
问题2:
在主activity中,通过findViewById来获得Fragment的layout中的一个控件,总是获取失败,获得NULL?
A2:
请确保Fragment的OnCreateView总是在你在主activity中调用的时候之前。因为Fragment的OnCreateView函数,是当系统要画这个Fragment UI的时候被调用,这个函数返回值是一个view,系统拿这个view来画UI。而,一般都是在OnCreateView中,通过inflater来讲xml文件inflate成一个view再返回。所以,如果在主activty中,你要调用findViewById时,有时就会返回NULL,因为此时fragment的layout还未填充成view,你当然会得到一个NULL。所以,可以考虑在OnCreawteView中调用findViewById来操作具体控件。不过记得,要在代码inflater.inflate(.....)之后。
本文解决在Android开发中使用FragmentTransaction替换Fragment时遇到的问题,并提供在主Activity中通过findViewById获取Fragment布局中控件的方法。重点讨论了确保Fragment的OnCreateView函数在调用时之前执行的重要性,以及如何正确操作Fragment内的视图元素。

1600

被折叠的 条评论
为什么被折叠?



