Fragment间相互调用并传值
public class MainFragment extends Fragment {
private static final String ARG_DATE="com.example.ting.datepickerfragment,date";
private static final String TAG_DATE="DatePickerFragment";
private static final int REQUEST_CODE=0;
private Button mButton;
private Date mDate;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
super.onCreateView(inflater,container,savedInstanceState);
View v=inflater.inflate(R.layout.buttonview,container,false);
mButton= (Button) v.findViewById(R.id.button_view);
mDate= (Date) getArguments().getSerializable(ARG_DATE);
mButton.setText(getArguments().getSerializable(ARG_DATE).toString()+"");
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Toast.makeText(getActivity(),"请不要点我!",Toast.LENGTH_SHORT).show();
// DialogFragment.
FragmentManager fm=getFragmentManager()//获取目前的Fragment,由于是在Fragment可以直接获取,如果在activity中需要自己创建。
DatePickerFragment datePickerFragment=DatePickerFragment.newInstance(mDate);
datePickerFragment.setTargetFragment(MainFragment.this,REQUEST_CODE);//设置将要被启动Fragment的父Fragment.
datePickerFragment.show(fm,TAG_DATE);//启动DialogFragment
}
});
// mButton.setText("sdfsdfsdf");
return v;
} @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
mDate= (Date) data.getSerializableExtra(DatePickerFragment.EXTRA_DATE);
mButton.setText(mDate.toString());
} public static MainFragment newInstance(Date date){
Bundle bundle=new Bundle();//将当前数据绑定到Bundle,通过Arguments传入Fragment
bundle.putSerializable(ARG_DATE,date);
MainFragment fragment=new MainFragment();
fragment.setArguments(bundle);
return fragment;
}
} /****************************************************/
public class DatePickerFragment extends DialogFragment {
private static final String BUNDLE_DATE = "com.example.ting.datepickerfragment.date";
public static final String EXTRA_DATE="com.example.ting.datepickerfragment.date";
private DatePicker mDatePicker;
private Date date; @NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {//返回对话框样式
super.onCreateDialog(savedInstanceState);
View v = LayoutInflater.from(getActivity()).inflate(R.layout.date_picker, null);
mDatePicker = (DatePicker) v.findViewById(R.id.date_picker_view);
date = (Date) getArguments().getSerializable(BUNDLE_DATE);
mDatePicker.init(date.getYear(), date.getMonth(), date.getDay(), null);
//创建AlertDialog样式。
return new AlertDialog.Builder(getActivity()).setTitle("Welcome").setView(v).setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Date mDate= new GregorianCalendar(mDatePicker.getYear(),mDatePicker.getMonth(),mDatePicker.getDayOfMonth()).getTime();
Intent intent=new Intent();
intent.putExtra(EXTRA_DATE,mDate);
getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_OK,intent);
//通过直接调用父Fragment的onActivityResult进行值传递。
//父Fragment通过实现onActivityResult方法来接收数据。
}
}).create();
} public static DatePickerFragment newInstance(Date date) {
Bundle bundle = new Bundle();//将值绑定Bundle 通过Arguments传入子Fragment
bundle.putSerializable(BUNDLE_DATE, date);
DatePickerFragment datePickerFragment = new DatePickerFragment();
datePickerFragment.setArguments(bundle);
return datePickerFragment;
}
}
Fragment间相互调用并传值的更多相关文章
- angularjs 指令间相互调用
<div ng-app="app"> <div ng-controller="myctl"> <button superman s ...
- Extjs Ext.ux.IFrame的用法 以及父子窗口间函数相互调用
Extjs Ext.ux.IFrame的用法 以及父子窗口间函数相互调用 Ext.ux.IFrame Extjs官方提供的一个组件,可以很方便的使用. 这样就完成了一个简单的IFrame的使用,通过E ...
- Python实例浅谈之三Python与C/C++相互调用
一.问题 Python模块和C/C++的动态库间相互调用在实际的应用中会有所涉及,在此作一总结. 二.Python调用C/C++ 1.Python调用C动态链接库 Python调用C库比较简单,不经过 ...
- Python与C/C++相互调用(python2 调c++那个试了ok)
一.问题 Python模块和C/C++的动态库间相互调用在实际的应用中会有所涉及,在此作一总结. 二.Python调用C/C++ 1.Python调用C动态链接库 Python调用C库比较简单,不经过 ...
- java 中 this 和 super 说明及在构造器中super()和this()相互调用执行顺序
this this 表示当前对象 使用上细分的话,this有 this. 和this()的使用情况 ,下面我们开始细撸 this . 使用场景一: 在成员方法中,this.变量名 指带当前对象的变量, ...
- Python与C/C++相互调用(转)
原文链接 作者 一.问题 Python模块和C/C++的动态库间相互调用在实际的应用中会有所涉及,在此作一总结. 二.Python调用C/C++ 1.Python调用C动态链接库 Python调用C库 ...
- Fragment间的通信
在网上看到的一篇文章,总结的很好 为了重用Fragment的UI组件,创建的每个Fragment都应该是自包含的.有它自己的布局和行为的模块化组件.一旦你定义了这些可重用的Fragment,你就可以把 ...
- 主页面、iframe之间调用以及传值
主页面.iframe之间的调用和传值,无非就是两个交互形式: 主页面与子页面的交互 子页面之间的交互 接下来要讲的是四种交互传值的方式:利用postMessage方法传值.DOM操作传值.URL方式传 ...
- 【转】iOS开发--一步步教你彻底学会『iOS应用间相互跳转』
1. 应用间相互跳转简介 在iOS开发的过程中,我们经常会遇到需要从一个应用程序A跳转到另一个应用程序B的场景.这就需要我们掌握iOS应用程序之间的相互跳转知识. 下面来看看我们在开发过程中遇到的应用 ...
随机推荐
- css 中font属性知识点总结
一. font属性值可以继承.例如子元素可以继承父元素的行高,字体大小等等. 二.font属性可以进行连写:font: font-sytle font-weight font-size/line- ...
- JAVA代理方式使用示例总结
JAVA代理方式使用示例总结 一. 代理方式概括 Java的代理方式主要包含了静态代理,动态代理两种方式,其中,动态代理根据实现的方式不同,又可以划分为jdk动态代理和cglib动态代理. 二. ...
- 01--[转]C++强大背后
[转]C++强大背后 2014-01-22 分类:互联网 阅读(9295) 评论(6) 在31年前(1979年),一名刚获得博士学位的研究员,为了开发一个软件项目发明了一门新编程语言,该研究员名为Bj ...
- matlab学习创建变量定义函数
定义变量a,b,c,计算输出d >> a=-3;b=2;c=5;>> d=(a^2+b)/c;>> d=(a^2+b)/c d = 2.2000 系统默认变量 a ...
- JS 猴子
公园里有一只猴子和一堆桃子,猴子每天吃掉桃子总数的一半,把剩下一半中扔掉一个坏的. 到第七天的时候,猴子睁开眼发现只剩下一个桃子.问公园里刚开始有多少个桃子? <!DOCTYPE html> ...
- springboot 打包下载数据
//文件打包下载 public static HttpServletResponse downLoadFiles(List<File> files, Htt ...
- 训练1-B
杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer). 杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍 ...
- 训练1-K
一个整数,只知道前几位,不知道末二位,被另一个整数除尽了,那么该数的末二位该是什么呢? Input 输入数据有若干组,每组数据包含二个整数a,b(0<a<10000, 10<b< ...
- [TJOI2018]xor
题目大意: 有一棵树,根节点为1.每个点有点权.有两种操作. 1. 求节点x所在子树中点权与y异或的最大值.2. 求x到y的路径上点权与z异或的最大值. 解题思路: 可持久化字典树. 对于第一种操作, ...
- Problem 2
Problem 2 # Problem_2.py """ Each new term in the Fibonacci sequence is generated by ...