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应用程序之间的相互跳转知识. 下面来看看我们在开发过程中遇到的应用 ...
随机推荐
- 使用Eric构建Caffe应用程序-Baby年龄识别
训练好的Caffe网络结构,可以固定下来,直接载入程序作为数据库接口使用.本文使用Eric构建运行于Python环境下的图片识别应用程序,因为Eric使用QT作为GUI,且有Python的接口,可直接 ...
- 编译OpenCV遇到Qmake问题
1.Ubuntu安装OpenCv,出现:qmake: could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/qmake': No such file or ...
- css3实现动画滚动条
先给大家一张效果图,看似简单,其实实现起来....那也是非常简单的~简单又实用 黑框里面的字体会自动滚动,形成滚动条,可以用于展示和提示,首先我们先要在body里面写上自己想要的文字,比如我想写:感觉 ...
- WIN 10 增删输入法
第一步: 任务栏右击 “语言——设置” 第二步: 第三步: 删除或者增加就好.
- Asp 日期格式化问题 沙比作者,我改过来。
Asp 日期格式化问题 投稿:mdxy-dxy 字体:[增加 减小] 类型:转载 时间:2009-06-14我要评论 asp做网站经常遇到日期格式处理问题,介绍一个有用的vbscript函数forma ...
- Bash 如何取得当前正在执行的脚本的绝对路径?
转自:http://blogread.cn/it/article/6549?f=wb Bash 如何取得当前正在执行的脚本的绝对路径? 如题,一般我们写Shell脚本的时候,都倾向使用绝对路径,这样无 ...
- 深入理解Java中的锁
转载:https://www.jianshu.com/p/2eb5ad8da4dc Java中的锁 常见的锁有synchronized.volatile.偏向锁.轻量级锁.重量级锁 1.synchro ...
- windows电脑配置耳机只有一个耳朵响
也许你在工作,需要一个耳朵听同事的声音,一个耳朵听电脑的音乐,但是又不想另一个耳机头泄露声音,这样就有了想配置只有左/右单个耳机头会响的操作. 那么我们就开始配置吧,我这里以win10为例: 右击桌面 ...
- swiper.js在隐藏/显示切换时,轮播出现bug的解决办法
swiper在 swiper-container正常状态下显示,轮播是没有问题,但是当 swiper-container由隐藏切换至显示时(比如做图片查看时)会出现滑动bug,滑动卡顿而且最后一张可以 ...
- Gradle学习总结——抓重点学Gradle
前言 网上关于Gradle的教程很多,但很多都是以"面"切入- 通过大量讲解其用法及其API分类来阐述.但Gradle API使用技巧众多,API更是成千上百,臣妾记不住呀.个人深 ...