Android中Activity和Fragment之间的通信
来源:互联网 发布:农家乐商机数据 编辑:程序博客网 时间:2024/05/17 09:12
Android中Activity和Fragment之间的通信
- Fragment启动Activity传数据到Fragment
举例:城市选择列表。一个Fragment启动Activity,Activity再把城市选择数据回传到Fragment中。
Fragment中方法 iv_city.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Toast.makeText(getActivity(), "点击了", Toast.LENGTH_SHORT).show(); Intent intent=new Intent(getActivity(), CityActivity.class); startActivityForResult(intent,0); } });重写onActivityResult方法 @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); Log.d("tag", "返回结果"+resultCode); // 取出intent中的值 // 一般,加个null判断 if (data != null) { String stringExtra = data.getStringExtra("city"); cityid= data.getStringExtra("cityId"); Log.d("tag", "城市ID"+cityid); getData(10); // 把取出的值设置到et_name中 if (resultCode==1) { tv_city.setText(stringExtra); } } }
CityActivity@Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { final TextView textView = (TextView) holder.itemView; textView.setText(getItem(position).getCityName());//得到城市名// final String cityId = getItem(position).getCityId();//得到城市ID textView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(CityActivity.this, "选择城市:"+textView.getText(), Toast.LENGTH_SHORT).show(); // Intent intent =new Intent(); Intent intent = getIntent(); intent.putExtra("city",textView.getText().toString()); // for (int i = 0; i < cities.size(); i++) { if (textView.getText().toString().equals(cities.get(i).getCityName())){ cityId = cities.get(i).getCityId(); } } intent.putExtra("cityId",cityId); setResult(1,intent); finish(); } }); }
- Fragment传数据到Fragment
举例:左边是电影列表的Fragment,右边是一个电影的具体内容的Fragment。点击左边的Fragment传数据给右边的Fragment显示。可以通过Fragment的fragment.setArguments(bundle)传。
MovieListFragment@Override public void onListItemClick(ListView l, View v, int position, long id) { // TODO Auto-generated method stub super.onListItemClick(l, v, position, id); //当Item被点击,调用 Toast.makeText(getActivity(), names[position]+":"+files[position], Toast.LENGTH_LONG).show(); //点击时,获取Files数组对应的内容 //把获取的内容传给Fragment //加载对应的Fragment //5步骤 MovieContentFragment fragment=new MovieContentFragment(); //把传参传入到Fragment Bundle bundle=new Bundle(); bundle.putString("fileName", files[position]); fragment.setArguments(bundle); FragmentManager fm = getFragmentManager(); FragmentTransaction transaction = fm.beginTransaction(); transaction.replace(R.id.flayout, fragment); transaction.commit(); }
MovieContentFragment@Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); // 取出参数 Bundle bundle = getArguments(); String name = bundle.getString("fileName"); // 根据文件名,解析对应内容
- Activity传数据到Fragment
举例:新闻头部标签加载对应的Fragment. Activity通过传不同的url地址构建不同的Fragment。
Activity/** * 初始化List<Fragment> */ private void initFragment() { fragments = new ArrayList<>(); //根据标题的个数,循环创建Fragment, int len = titles.length; for (int i = 0; i < len; i++) { //创建一个新的Fragment ContentFragment cf = new ContentFragment(); //传入参数,以便构造不同的数据 Bundle bundle = new Bundle(); bundle.putString("key", urls[i]); cf.setArguments(bundle); //添加到Fragment集合中 fragments.add(cf); } }
Fragment//获取传入的参数,根据参数构造不同的数据 Bundle bundle = getArguments(); String values = bundle.getString("key"); //异步任务 MyTask myTask=new MyTask(new MyTask.CallBack() { @Override public void getData(List<NewsBean> list) { data.addAll(list); adapter.notifyDataSetChanged(); } }); myTask.execute(values);
1 0
- Android中Activity和Fragment之间的通信
- Android中的Fragment ---- 04(Activity和Fragment之间的通信)
- Android中的Fragment ---- 05(Activity和Fragment之间的通信)
- android中fragment和activity之间相互通信
- android中fragment和activity之间相互通信
- android中fragment和activity之间相互通信
- android中fragment和activity之间相互通信
- android中fragment与activity之间通信
- Android Fragment和Activity之间通信方式
- Android中Fragment和Activity之间的通信(含接口回调)
- android Activity与Fragment之间的通信
- Fragment和Activity之间的相互通信
- Fragment和Activity之间的相互通信
- Activity和Fragment之间的通信
- Fragment和Activity之间的通信
- Fragment和Activity之间的通信
- Android<Fragment之间的通信以及Fragment和Activity的通信>
- Android中Fragment与Fragment,Fragment与Activity之间的通信
- 51nod-1205 流水线调度
- 串口通信Usart发送程序
- Construct 2 制作游戏心得
- 由于 box.style.left只能获取行内样式的值,不能获取到css中JS中样式left等值;用JS获取外部CSS样式--currentStyle和getComputedStyle的兼容写法
- Orm之XML解析
- Android中Activity和Fragment之间的通信
- Java文件读写操作
- 剑指Offer 9题 斐波那契数列(Fibonacci) Java版
- 去除CSDN 博客页广告的历程
- JS中各种宽度距离小结
- [数据库连接池] Java数据库连接池--DBCP浅析.
- Chrome“无法添加来自此网站的应用”的解决办法
- [HDU]5531 Rebuild (三分法求下凸函数,维护最小圆面积)
- 两个辅助指针变量挖字符串(4种实现方式)