需要总结一下fragment与activity之间数据传输的方法

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...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值