问题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(.....)之后。