您的位置:首页 > 其它

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

2017-08-06 13:39 465 查看
 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通信
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: