fragment间的数据传递

  • 时间:2017-10-16
  • 分类:Android开发
  • 1151 人浏览
[导读]今天我将要讲的是fragment间的数据是如何进行传递的。这里我将举个简单的例子。首先要有个MainActivity,它托管了MainFragment,而MainFragment又托管了DatePickerFragment。

今天我将要讲的是fragment间的数据是如何进行传递的。这里我将举个简单的例子。

首先要有个MainActivity,它托管了MainFragment,而MainFragment又托管了DatePickerFragment。其间用到了简单的模型Crime,它只有Date类型的mDate一个属性。例子中的关注点是日期怎么在MainFragment和DatePickerFragment间传递的。

1.调整布局

strings.xml添加字符串资源

activity_main.xml添加FrameLayout布局

fragment_main.xml中添加button组件

dialog_date.xml添加DatePicker组件

2.Crime.java

3. MainFragment.java

继承Fragment,在onCreateView方法中创建并配置fragment视图,其间设置按钮的监听事件,点击后,调用DatePickerFragment的静态函数newInstance,将数据保存在argument bundle中,并同时设置DatePickerFragment的目标fragment是MainFragment。最后设置对于DatePicker对话框的响应。

4.DatePickerFragment.java

直接获取保存在arguments中的数据,并将数据显示,最后设置目标fragment。

5.MainActivity.java

托管MainFragment,使界面呈现出来。

6.运行结果如下。

注意现在的时间点

1.png

点击按钮

2.png

更改一下时间点

3.png

按钮ok后时间改变了!

4.png

7.总结一下 1. 传递数据给DatePickerFragment 要传递crime日期给DatePickerFragment,需将它保存在DatePickerFragment的argument bundle中。
这样,DatePickerFragment就能直接获取它。 创建和设置fragment argument通常是在newInstance()方法中完成的(代替fragment构造方法)。 2. 返回数据给MainFragment 设置目标fragment。
类似于activity间的关联,可将MainFragment设置成DatePickerFragment的目标fragment。这样,在MainFragment和DatePickerFragment被销毁并重建后,操作系统会重新关联它们。
调用以下方法可建立这种关联:

public void setTargetFragment(Fragment fragment,int requestCode)

传递数据给目标fragment
建立MainFragment与DatePickerFragment之间的联系后,需要将数据回传给MainFragment。回传日期将作为extra附加给Intent。

来源:本文为线上采编,如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除!