两个简单fragment之间的通信(三种方式)
截图如下:点击左侧fragment按钮改变右侧fragment文本
在fragment中,getfragmentmanager底层还是getactivity.getfragmentmanager
思路:找第三方,activity
- 第一种
根据activity里的布局id获取到相应放置的fragment实例
fragmentmanager fragmentmanager = getfragmentmanager();
rightfragment id = (rightfragment) fragmentmanager.findfragmentbyid(r.id.ll_right);
id.changetext("yy");
- 第二种
在replace时为fragment添加一个tag,根据tag获取相应的fragment实例
transaction.replace(r.id.ll_right,new rightfragment(),"sss");
fragmentmanager fragmentmanager = getfragmentmanager();
rightfragment tag = (rightfragment) fragmentmanager.findfragmentbytag("sss");
tag.changetext("qqqqq");
3.第三种
可以根据tag获取fragment实例,再根据控件的id获取到fragment的控件进行操作,较为麻烦
fragmentmanager fragmentmanager = getfragmentmanager();
rightfragment tag = (rightfragment) fragmentmanager.findfragmentbytag("sss");
view view1 = tag.getview();
textview tv_result = (textview) view1.findviewbyid(r.id.tv_result);
tv_result.settext("dhiwhdiwh");
注意:在fragment中,添加控件的点击事件不能用onclick方法,只能根据控件的id进行findviewbyid获取控件实例再setonclicklistener
fragment的生命周期
上图就是fragment完整的生命周期,相比于activity的生命周期多了如下几个方法
onattach():当fragment与activity发生关联时,该方法被调用
oncreateview():创建fragment的视图
onactivitycreate():当activity的oncreate()返回时被调用
ondestoryview():与oncreateview()是对应的,当fragment的视图被销毁时,该方法被调用
ondetach(): 与onattach() 方法相对应,当fragment与activity的关联被取消时,该方法被调用