踩了些坑,做个笔记,方便以后看
方法一:利用碎片的setArguments()方法传递bundle
首先,先穿插一个活动间传递数据的方法:
活动间传递数据:
// 两种方法
/**
*方法一:直接使用intent提供的put方法,如putString、putputExtra之类的
*只适合传递单个数据以及两个活动间
**/
intent.putString("key", "123456");
intent.getString("key");
/**
*方法二:bundle(推荐)
*把数据封装到bundle中,十分方便,只需在活动间传递bundle即可
**/
// 活动一
Bundle bundle = new Bundle();
bundle.putString("phone", phoneNum);
bundle.putString("sub", chooseSub);
bundle.putString("score", score);
Intent intent = new Intent(getContext(), MainActivity.class);
intent.putExtras(bundle);
startActivity(intent); // 跳转到主界面
// 活动二
Bundle bundle = getIntent().getExtras(); // 获取传递来的bundle
bundle.getString("phone");
// 一个可以将bundle内容打印到log的方法
for (String key: bundle.keySet())
{
Log.d("Bundle", " key=" + key + ", value=" +bundle.getString(key));
}
进入正题,使用setArguments()从活动传递数据到碎片:
// 活动:先对碎片进行实例化
StartFragment startFragment = new StartFragment();
startFragment.setArguments(bundle);
//碎片
Bundle bundle = getArguments();
sub = bundle.getString("sub");
score = bundle.getString("score");
注意!在碎片中,一定要在onCreatView()方法里面使用getArguments(),否则bundle为空!
方法二:直接在碎片中获取bundle
// 直接在碎片中使用这行代码获取bundle
Bundle bundle = getActivity().getIntent().getExtras();