场景1:ActivityA 启动ActivityB
一. Activity A 传输数据到ActivityB的方法
- 通过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);
- 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