Activity与Activity,Activity与Fragment及Fragment与Fragment之间传值

来源:互联网 发布:linux 文件写权限 编辑:程序博客网 时间:2024/05/18 20:32
 1,Activity与Activity通信及Activity与Fragment通信
1) 当Fragment跟Activity绑定之后,在Fragment中可以直接通过getActivity()方法获取到其绑定的Activity对象,这样就可以调用Activity的方法了。在Activity中可以通过如下方法获取到Fragment实例
FragmentManager fragmentManager = getFragmentManager();
Fragment fragment = fragmentManager.findFragmentByTag(tag);
Fragment fragment = fragmentManager.findFragmentById(id);
获取到Fragment之后就可以调用Fragment的方法。也就实现了通信功能。
2)另外也可以调用fragment.setArguments(Bundle)方法,将数据绑定到Fragment域中。
可传输的数据类型: a.基本数据类型(数组),  b. String(数组),  c. Bundle(Map),     d. Serializable(Bean), e.Parcelable(放在内存一个共享空间里);
基本类型:
    Intent intent = new Intent(this, OtherActivity.class);
    intent.putExtra("name", "张飞");        // 携带数据
    intent.putExtra("age", 12);
    startActivity(intent);
一捆数据:
    Intent intent = new Intent(this, OtherActivity.class);
    Bundle b1 = new Bundle();
    b1.putString("name", "赵云");
    b1.putInt("age", 25);
    Bundle b2 = new Bundle();
    b2.putString("name", "关羽");
    b2.putInt("age", 44);
    intent.putExtra("b1", b1);
    intent.putExtra("b2", b2);
序列化对象(须实现序列化接口):
    Intent intent = new Intent(this, OtherActivity.class);
    Person p = new Person("张辽", 44);
    intent.putExtra("p", p);
接收数据:
    在OtherActivity 的onCreate()方法,通过 getIntent().get 相关的数据的方法来获取数据;

关闭时返回数据
基本流程:
    使用startActivityForResult(Intent intent, int requestCode) 方法打开Activity;
    重写onActivityResult(int requestCode, int resultCode, Intent data) 方法;
    新Activity中调用setResult(int resultCode, Intent data) 设置返回数据之后,关闭Activity就会调用上面的onActivityResult方法;

2,2个Fragment之间有一个公共的桥梁---->Activity
Fragment与fragment通信
阅读全文
0 0