1 activity和托管的fragment中
中,在托管fragment的activity里的onCreate()方法中
Bundle bundle=new Bundle(); bundle.putInt("heartRatePk",heartRatePk);
fragment = new ReporterListFragmet();;//createFragment() fragment.setArguments(bundle);传递进bundle中
在fragment中
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { heartRatePk=getArguments().getInt("heartRatePk");
2 在同一个activity托管的fragment之间
这里假设由fragment1 启动fragment2,要由fragment1传给fragment2的数据是data,
这里可以在fragment1中调用 newInstance(data),方法,在newInstance(data){保存data...return new fragment2}
public static DatePickerFragment newInstance(Date date) {
Bundle args= new Bundle();
args.putSerializable(ARG_DATE,date);
DatePickerFragment fragment=new DatePickerFragment();
fragment.setArguments(args);
return fragment;//fragment2
}
在fragment2中获取数据 在onCreateDialog() final Date date =(Date)getArguments().getSerializable(ARG_DATE) ;
再由fragment2 传数据data2给fragment1,
需要将数据打包成extra,附加到intent上,再在fragment1中调用fragment.onActivityResult()
Intent intent=new Intent(); intent.putExtra(EXTRA_DATE,date);
getTargetFragment().onActivityResult(getTargetRequestCode(),resultCode,intent);
fragment2.setTargetFragment(frament1,"key");返回结果给fragment1
3 两个activity之间
***单 发: Intent intent = new Intent(pulse_collect.this, MainActivity.class);//在pulse_collect activity的基础上打开maiactivity intent.putExtra("pulse", pulse_raw);//将这些数据传给mainactivity
startActivity(intent);//
在第二个activity中
Intent intent =getIntent();
****往返:如果想要返回结果
Intent intent = new Intent(pulse_collect.this, MainActivity.class);//在pulse_collect activity的基础上打开maiactivity intent.putExtra("pulse", pulse_raw);//将这些数据传给mainactivity
startActivityForResult(intent, REQUEST_CODE_CHEAT);
在第二个activity中
Intent data = new Intent();
data.putExtra(EXTRA_ANSWER_SHOWN, isAnswerShown);
setResult(RESULT_OK, data);
protected void onActivityResult(int requestCode, int resultCode, Intent data)
该方法的参数来自QuizActivity的原始请求代码以及传入setResult(int,Intent)方法
的结果代码和intent。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != Activity.RESULT_OK) {
return;
}
if (requestCode == REQUEST_CODE_CHEAT) {
if (data == null) {
return;
}
mIsCheater = CheatActivity.wasAnswerShown(data);
}
}
..
intent.getExtra...