4.1 Activity中的通信

场景1:ActivityA 启动ActivityB

一. Activity A 传输数据到ActivityB的方法

  1. 通过Intent的Bundle
Intent intent = new Intent(ActivityA.this,ActivityB.class);
Persion p = new Persion("tang","man");
Bundle b = new Bundle();
b.putSerializable("persion",p);
intent.putExtras(b);
startActivity(intent);

二. ActivityB 处理完成以后 返回结果到ActivityA的方法

在ActivityA中通过下面的代码启动Activity

startActivityForResult(intent,int requestCode);
//还需要重写其中的onActivityResult方法来处理返回的结果
public void onActivityResult(int requestCode,int resultCode,Intent intent){
    //...
}

在ActivityB中通过如下的方式返回结果:

Intent intent = getIntent();
intent.putExtra("city","changsha");
ActivityB.this.setResult(0,intent);
ActivityB.this.finish();

场景2 Activity和Fragment的通信

一.获取对应的组件

getActivity()
getFragmentManager().findFragmentById();

二. 传递数据
1. Activity 向 Fragment传递数据

Bundle bundle = new Bundle();
bundle.putInt("id",78);
FragmentA fragment = new FragmentA();
fragment.setArguments(bundle);
// 利用fragment来替换id为 book_detail_container的FrameLayout
getFragmentManager().beginTrasaction().replace(R.id.book_detail_container,fragment);
  1. Fragment向Activity传递数据
    在 Fragment中建立一个接口并调用
pulbic class FragmentA extends Fragment{
    pulbic interface Callbacks{
        pulbic void onItemSelected(Integer i);
    }
    //在onAttach(方法中把Activity转换为callbacks)
    public void onAttach(Activity activity){
        mCallbacks = (Callbacks) activity;
    }
    //在其他的方法通过调用来实现数据传递
    public void diaoyong(){
        mCallbacks.onItemSelected(15);
    }
}

在Activity中实现FragmentA中的接口,上面的调用就变成了调用Activity

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值