Android - 卡片式布局 Fragment详细回顾(一)介绍了什么时候使用Fragment,Fragment的生命周期及各个生命期内我们可以做什么事,如何静态的创建Fragment。
Android - 卡片式布局 Fragment详细回顾(二)介绍了如何动态的创建Fragment,FragmentManager 和 FragmentTransaction这两个类中的常用API。
这篇主要说两件事,第一是fragment如何与Activity进行交互,第二是Google官方推荐的弹出对话框DialogFragment。
五、Fragment与Activity交互
说到交互,一点也不陌生,Activity之间的交互,Activity与service之间的交互,不同线程间的通信等等。那么Fragment与Activity的交互也显得没有那么特别。
首先说Activity如何向fragment传值。好的办法我也没想到,有个比较笨的方法就是,在Fragment类里写一个setXxx的方法,在Activity中new的Fragment对象时,调用该方法,这样Activity里面的值就可以传到Fragment。一会代码说明。
我想说的是fragment向Activity传值或者通信。我们知道在fragment中可以通过getActivity()方法拿到绑定的Activity,那么里面的一些方法也可以随之调用。但是并不推荐这种方法。这里用的是回调。在Fragment中声明一个接口,Activity实现这个接口。具体代码如下:
(为了方便,我把两个方向的通信写在了一个demo里面,第一个fragment向Activity发送消息让它启动第二个Fragment,并且把Activity里面的值传递给第二个Fragment)
首先是第一个fragment:
public class TestFragment extends Fragment implements OnClickListener{
private Button add;
private EditText msg;
private onFragmentListener fragmentListener;
public interface onFragmentListener{
public void show(String