Fragment是Android3.0之后才推出来的。可以用来做底部菜单,现在很多APP都有用到这个底部菜单。当然TabHost也可以用来做底部菜单,但是Fragment来做,动画效果这些可以做得更炫。

Fragment和Activity之间是可以相互进行参数传送这些。但是Fragment不可以直接就将数据传送到另外一个Fragment,而是借助Activity,先传到Activity,然后再通过Activity传到Fragment。  所以实现Fragment和Activity之间的数据传送是很关键的。

(1)先创建一个Interface接口IBnCallListener,用来实现两者之间的数据传送。

package com.util;
/**
* 传送Fragment和FragmentActivity之间的控件交互信息
*
*/
public interface IBtnCallListener {
public void transfermsg();
}

(2)创建Activity类实现IbtnCallListener接口,重载onAttachFragment(Fragment fragment)方法和transfermsg()方法,然后transfermsg()方法就根据自己项目需要去调用了

package com.activity;

/**
*
*主界面类
*fragment是3.0以后的东西,为了在低版本中使用fragment就要用到android-support-v4.jar兼容包,
*而fragmentActivity就是这个兼容包里面的,它提供了操作fragment的一些方法,其功能跟3.0及以后的版本的Activity的功能一样。
*/
public class MainActivity extends FragmentActivity implements IBtnCallListener{
//RadioButton private RadioButton radioBtn; private Intent intent;
private Bundle bundle; private IBtnCallListener mBtnCallListener; private Bundle sendBundle; private MyFragment mFragment; FragmentTransaction ft; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置无标题
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main); } ... @Override
public void onAttachFragment(Fragment fragment) {
try {
mBtnCallListener=(IBtnCallListener) fragment;
} catch (Exception e) { }
super.onAttachFragment(fragment);
} @Override
public void transfermsg() {
radioBtn.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.tab_found_pressed_icon, 0, 0);
radioBtn.setTextColor(mFound.getResources().getColor(R.color.topbar_bg));
if(mFoundFragment == null){
//关键代码,肯定要这三句代码的,其它的根据自己的项目需要
mFragment = new MyFragment();
sendBundle = new Bundle();
sendBundle.putString("test", "Android");
//transfermsg();
mFragment.setArguments(sendBundle);
ft.add(R.id.fg_content,mFragment);
}
ft.show(mFoundFragment);
ft.commit();
}
}

(3)Fragment类实现IBtnCallListener接口类

/**
* MyFragMent类
*/ public class MyFragment extends Fragment implements IBtnCallListener{ private Bundle bundle; IBtnCallListener mbtnListener; private String test; //@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.found,container,false);
transfermsg();
return view;
} } @Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
} @Override
public void onAttach(Activity activity) {
try {
mbtnListener=(IBtnCallListener) activity;
} catch (Exception e) {
// TODO: handle exception
throw new ClassCastException(activity.toString() + "must implement mbtnListener");
}
super.onAttach(activity);
} @Override
public void transfermsg() {
bundle = getArguments();
test = bundle.getString("test");
System.out.println("由Activity传输过来的信息");
Toast.makeText(getActivity(), test, 1000).show();
}
}

安卓Fragment和Activity之间的数据通讯的更多相关文章

  1. Android Fragment与Activity之间的数据交换(Fragment从Activity获取数据)

    Fragment与Activity之间的数据交换,通常含有3: 一.Fragment从Activity获取数据(仅本文介绍了一个第一): 两.Activity从Fragment获取数据: 三.Frag ...

  2. Android 笔记-Fragment 与 Activity之间传递数据

    Fragment 与 Activity之间传递数据有两种方法.一种是使用setArgument,一种是使用接口回调.以下先学习第一种方法. (1)使用setArgument方法: 为了便于理解,我在这 ...

  3. Android进阶之Fragment与Activity之间的数据交互

    1 为什么 因为Fragment和Activity一样是具有生命周期,不是一般的bean通过构造函数传值,会造成异常. 2 Activity把值传递给Fragment 2.1 第一种方式,也是最常用的 ...

  4. Android:Activity+Fragment及它们之间的数据交换.

    Android:Activity+Fragment及它们之间的数据交换 关于Fragment与Fragment.Activity通信的四种方式 比较好一点的Activity+Fragment及它们之间 ...

  5. [转]Android:Activity+Fragment及它们之间的数据交换(一)

    2014-05-18         来源:Android:Activity+Fragment及它们之间的数据交换(一)   简介: 为什么要用Fragment?使用Fragment可以在一个Acti ...

  6. Android:Activity+Fragment及它们之间的数据交换(一)

    简单介绍: 为什么要用Fragment?使用Fragment能够在一个Activity中实现不同的界面. Fragment与Fragment之间的动画切换,远比Activity与Activity之间的 ...

  7. activity之间的数据传递方法

    1  基于消息的通信机制 Intent--------boudle,extra 用这种简单的形式,一般而言传递一些简单的类型是比较容易的,如int.string等 详细介绍下Intent机制 Inte ...

  8. Android(Fragment和Activity之间通信)

    Fragment的使用可以让我们的应用更灵活的适配各种型号的安卓设备,但是对于Fragment和Activity之间的通信,很多朋友应该比较陌生,下面我们就通过一个实例来看一看如何实现. 一.Acti ...

  9. Activity之间传递数据的方式及常见问题总结

    Activity之间传递数据一般通过以下几种方式实现: 1. 通过intent传递数据 2. 通过Application 3. 使用单例 4. 静态成员变量.(可以考虑 WeakReferences) ...

随机推荐

  1. Postfix配置Q&A

    原文地址:http://space.doit.com.cn/51460/viewspace-4943.html 在配置Postfix中遇到的一些问题及相关的解决方法,希望在遇到相同的问题时能起参考的作 ...

  2. MySQL5日期类型DATETIME和TIMESTAMP相关问题详解

    MySQL5日期类型DATETIME和TIMESTAMP相关问题详解 MySQL5的日期类型有三种:DATETIME.DATE和TIMESTAMP,除了DATE用来表示一个不带时分秒的是日期,另外两个 ...

  3. MFC 学习之 鼠标移动到Toolbar按钮上显示提示信息(tooltip),状态栏也随之改变

    1.在ResourceView里加入Toolbar资源,命名IDR_TOOLBAR1 2.在主程序的.h文件中加入变量:           CToolBar m_toolbar;CImageList ...

  4. Select-Object用法

    展开 modules 属性的详细信息 get-process |? {$_.processname -eq "cmd"}|select -ExpandProperty module ...

  5. 一个方便的shell命令,查看软件安装目录

    查看软件安装路径:whereis phpfind / -name nginx.configfind 查找 / 从根目录 -name 文件查找

  6. Qt界面设计1

    最近刚接触Qt 对于QML做界面感觉已经很轻松了,但是想尝试一下GUI..准备做一个理财的小软件 ....慢慢记录我的一点一滴的学习经历. 自己封装界面UI 遇到了好多新手级别的问题=_=!!! 1. ...

  7. 在iOS中怎样创建可展开的Table View?(下)

    接上篇:在iOS中怎样创建可展开的Table View?(上) 展开和合拢 我猜这部分可能是你最期望的了,因为本次教程的目标将会在在部分实现.第一次我们设法让顶层的cell,在它们点击的时候展开或者合 ...

  8. [Effective C++ --020]宁以pass-by-reference-to-const替换pass-by-value

    前言: 我们都用过C的值传递方式,那么在C++情况下,值传递是怎样工作的呢? 比如: int foo(int x); int i; foo(i); 1.程序内部先取得i的一个副本 2.将副本传递到fo ...

  9. 六、Socket之UDP异步传输文件-实现稳定的文件传输

    上一篇文章五.Socket之UDP异步传输文件-实现传输中取消传送中,还遗留了一个传输文件最大的问题,就是传输过程中丢包,这样在文件传输过程中就会卡住了,这篇文章就来解决文件传输中的丢包问题,实现稳定 ...

  10. 自学JavaScript笔记

    最近看了一段时间的<JavaScipt高级编程设计>由于记性不是很好,经常性的看了又忘记:想一些文字整理在自己的博客上,方便没事都可以拿出来看一下: 第一章 JavaScript概述   ...