(1)Activity A发送数据的方法:
Intent intent=new Intent();
intent.setClass(MainBuildingActivity.this, CitySelectActivity.class);
startActivityForResult(intent,1001);
(2)Activity B接收数据和返回数据的方法
Intent intent = new Intent();
intent.putExtra("city",((SortModel)adapter.getItem(position)).getName());
setResult(1001,intent);
finish();
(3)Activity A接收数据的方法
//第一个参数为请求码,即调用startActivityForResult()传递过去的值
//第二个参数为结果码,结果码用于标识返回数据来自哪个新Activity
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//得到新Activity关闭后返回的数据
if(requestCode==1001){
String result =data.getExtras().getString("city");
ToastUtil.showShort(SecondHouseListActivity.this,result);
}
}
好了第一种传递数据和接收数据的方法就大功告成了
(1)首先是注册广播功能,将该代码加载页面时直接进行注册
//注册广播
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("action.refreshperson");
registerReceiver(mRefreshBroadcastReceiver, intentFilter);
(2)A页面可正常跳转到Activity B页面
(3)Activity B获得的数据传递回Activity A
Intent intent = new Intent();
intent.setAction("action.refreshPerson");
sendBroadcast(intent);
finish();
(4)Activity A接收数据的方法
/*接收弹出框的广播,对广播进行监听刷新数据*/
private BroadcastReceiver mRefreshBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals("action.refreshperson")) {
String a=intent.getStringExtra("result")
}
}
};
3、通过接口的方式进行传递数据,适用于 Activity和Adapter之间的数据传递,也适用于Activity和Linearout之间传值。
(1)首先在adapter或者linearout中定义接口
private onMeanCallBack meanCallBack;
public interface onMeanCallBack {
//是在Activity中,执行接口时执行的方法,可获得传递的值
void isDisMess(Intent intent);
}
public void setOnMeanCallBack(onMeanCallBack m) {
this.meanCallBack = m;
}
//在adapter或者linearout中执行的传值内容
meanCallBack.isDisMess(intent);
在Activity中执行的方法
menuHeaderView = new BuildingScreenActivity(MainBuildingActivity.this,typeList);
//获得得到的值
menuHeaderView.setOnMeanCallBack(new BuildingScreenActivity.onMeanCallBack(){
@Override
public void isDisMess(Intent intent) {
//类型
listType= (List) intent.getSerializableExtra("listType");
gActivity.this,buildingType+"_"+condition);
}
});
其中通过Bundle进行传值的方式:
Bundle bundle = new Bundle();
bundle.putString("MyString", "test bundle");
取值: Bundle bundle = getIntent().getExtras(); /取出来的是个数组 String testBundleString = bundle.getString("MyString");
1)首先在调用viewpager的activity中往fragment中传值:
Bundle bd = new Bundle();
Bean bean = new Bean();
bd.putSerializable("bean", bean);
Testfragment fg0 = Testfragment.newInstance(bd);
2)在Testfragment写newInstantce方法
public static Testfragment newInstance(Bundle args) {
Testfragment fragment_y0 = new Testfragment();
fragment_y0.setArguments(args);
return fragment_y0;
}
3)在fragment获取值得方法
Bundle arg = getArguments();
Bean bean0 = (Bean) arg.getSerializable("bean");
Fragment testFragment = new TestFragment();
Bundle bundle = new Bundle();
bundle.putString("test", ID);
testFragment.setArguments(bundle);
getFragmentManager().beginTransaction()
.replace(R.id.fragment_content, testFragment)
.addToBackStack(null).commit();
B页面获取值方式
String test =getArguments().getString("test");