Android 复习6 fragment argument
2016-07-09 14:07
302 查看
这个传递真的是好难懂啊
首先我们先来看一看参与人员
1 firstactivity
2 seconactivity
3 firstfragment
过程是这样的:
secondactivity 向firstactivity 跳转 有个intent 。intent里面可以携带数据啊;
在intent.putExtra() 方法中我们传入一个键值对
获取方法有两种
在fragment中必须获取它所在activity的intent,这样就失去了fragment的封装性
键的定义一定是属于fragment 的
而intent是属于activity的
而activity必须了解其下属fragment的(和封装性无关)
所以我们可以这样做
activity 获取其自身intent,并从fragment获取键,组合得到值;再把值传给fragment;
activity
简单比喻一下是这样:
第一种情况是:
儿子想买玩具,而玩具店呢,只能和妈妈进行交易,然后他就去找要妈妈去买玩具,并且声称得不到玩具,就不睡觉;
第二种情况是:
孤儿院有好些小孩 每个可能都有自己想要的玩具,他们就写在纸条上。如果孤儿院的员工看见某个小孩的愿望,并且想要将其实现,就去玩具店买玩具,并且将其送给小孩;
现在看完全看不懂上面在说啥
activity就像是 一个父容器一样 fragment在其中
从fragment中启动 activity的方法
fragment 也是通过Intent定位到目标activity的,不是也不能是目标fragment,跳转需要借助父容器才能跳转
李四的儿子李小四要交给张三儿子张小三一封信,然后说张小三那里有解密的钥匙;CrimeFragment.EXTRA_CRIME_ID
张小三这里有秘钥;但是信在张三那里,所以他必须要和张三要,张三也必须有这么一封从李四那里过来的,且有这么一个秘钥记录的信;张三和张小三必须是父子关系,强关联;
那假如我告诉你说,父亲可以随便阅览儿子的秘钥,那会怎么样呢?
父亲拿过儿子的秘钥,解密了信件,放在了信箱
信箱完成后,儿子就可以随意阅览了
就像是邮差可以送好多家的信一样;这样儿子和父的关系就弱化了;fragment就可以随便复用了;
首先我们先来看一看参与人员
1 firstactivity
2 seconactivity
3 firstfragment
过程是这样的:
secondactivity 向firstactivity 跳转 有个intent 。intent里面可以携带数据啊;
在intent.putExtra() 方法中我们传入一个键值对
获取方法有两种
1
键值都在 firstfragment中获取 但问题是intent是 firstactivity的,所以你想获取 你就必须和某个activity有强关联在fragment中必须获取它所在activity的intent,这样就失去了fragment的封装性
UUID crimeId =(UUID)getActivity().getIntent().getSerializableExtra(EXTRA_CRIME_ID);
2
既然是键值对 我们就可以想一下:键的定义一定是属于fragment 的
而intent是属于activity的
而activity必须了解其下属fragment的(和封装性无关)
所以我们可以这样做
activity 获取其自身intent,并从fragment获取键,组合得到值;再把值传给fragment;
//fragment public static String EXTRA_CRIME_ID="com.example.asus.criminalintent.crime_id"; public static CrimeFragment newInstance(UUID crimeid) { Bundle args = new Bundle(); args.putSerializable(EXTRA_CRIME_ID,crimeid); CrimeFragment fragment = new CrimeFragment(); fragment.setArguments(args); return fragment; }
activity
protected Fragment createFragment(){ UUID crimeId =(UUID)getIntent().getSerializableExtra(CrimeFragment.EXTRA_CRIME_ID); return CrimeFragment.newInstance(crimeId); //return new CrimeFragment(); }
简单比喻一下是这样:
第一种情况是:
儿子想买玩具,而玩具店呢,只能和妈妈进行交易,然后他就去找要妈妈去买玩具,并且声称得不到玩具,就不睡觉;
第二种情况是:
孤儿院有好些小孩 每个可能都有自己想要的玩具,他们就写在纸条上。如果孤儿院的员工看见某个小孩的愿望,并且想要将其实现,就去玩具店买玩具,并且将其送给小孩;
现在看完全看不懂上面在说啥
1
首先我们要懂得是fragment 和 activity的关系activity就像是 一个父容器一样 fragment在其中
从fragment中启动 activity的方法
Intent intent =new Intent(getActivity(), CrimePagerActivity.class);
fragment 也是通过Intent定位到目标activity的,不是也不能是目标fragment,跳转需要借助父容器才能跳转
2
跳转很容易做到,基本像是李四家的儿子要和张三家儿子说话,李四儿子先和李四说,李四告诉张三,张三告诉自己儿子;那传输数据是这样的吗?//CrimeListFragment Crime c =((CrimeAdapter)getListAdapter()).getItem(position); Intent intent =new Intent(getActivity(), CrimePagerActivity.class); intent.putExtra(CrimeFragment.EXTRA_CRIME_ID,c.getmId()); startActivity(intent);
李四的儿子李小四要交给张三儿子张小三一封信,然后说张小三那里有解密的钥匙;CrimeFragment.EXTRA_CRIME_ID
//CrimeFragment public static String EXTRA_CRIME_ID="com.example.asus.criminalintent.crime_id"; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); UUID crimeId =(UUID)getArguments().getSerializable(EXTRA_CRIME_ID); mCrime= CrimeLab.get(getActivity()).ge 4000 tCrime(crimeId); }
张小三这里有秘钥;但是信在张三那里,所以他必须要和张三要,张三也必须有这么一封从李四那里过来的,且有这么一个秘钥记录的信;张三和张小三必须是父子关系,强关联;
那假如我告诉你说,父亲可以随便阅览儿子的秘钥,那会怎么样呢?
UUID crimeId =(UUID)getIntent().getSerializableExtra(CrimeFragment.EXTRA_CRIME_ID); //return CrimeFragment.newInstance(crimeId); }
父亲拿过儿子的秘钥,解密了信件,放在了信箱
public static CrimeFragment newInstance(UUID crimeid) { Bundle args = new Bundle(); args.putSerializable(EXTRA_CRIME_ID,crimeid); CrimeFragment fragment = new CrimeFragment(); fragment.setArguments(args); return fragment; }
信箱完成后,儿子就可以随意阅览了
就像是邮差可以送好多家的信一样;这样儿子和父的关系就弱化了;fragment就可以随便复用了;
相关文章推荐
- Android-androidstudio懒惰开发-必备插件
- 开发Android遇到过的坑
- Android之文件的读写权限
- 【Android】achartengine的柱状图和饼状图的使用
- Android搭建项目框架
- 安卓手册 第四章(MVP介绍和实战)
- Android设计模式之命令模式、策略模式、模板方法模式
- 获取短信验证码时的倒计时按钮实现
- Android开发 AndroidStudio添加RecycleView,解决预览失败
- Android自定义裁剪图片的View
- Android带侧滑菜单和ToolBar的BaseActivity
- Android退出应用程序,完全退出!
- android sdk 百度网盘
- 自己使用的Android框架
- 安卓手册 第三章(开发常识)
- android MotionEvent获得当前位置
- 关于Animation的那点小事,天气特效篇
- Android5.0 新特性--CardView
- Android界面编程——对话框控件(四)
- Android bug之transformClassesWithDexForDebug