思路:Activity与Fragment或者Fragment与Fragment之间的数据传递,依赖于Fragment所onAttached的那一个Activity,并分别调用setArguments()和getArguments()两个方法
方法:
- 创建一个Bundle对象,将数据传递进去(一般用Map<k,v>)
- 在Activity中调用setArguments()方法,将bundle数据传递进去
- 在Fragment中调用getArguments()方法,获得数据
代码实现:
从Activity向Fragment传递数据
public class MainActivity extends Activity{
private FragmentManager manager;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
TestFragment fragment=new TestFragment();
Bundle bundle=new Bundle();
bundle.putString("str","通过MainActivity传递的数据");
fragment.setArguments(bundle);
manager=getFragmentManager();
FragmentTransaction transaction=manager.beginTransaction();
transaction.replace(R.id.id_main,fragment);
transaction.commit();
}
}
在Fragment中获取数据
public class TestFragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState)
View view=inflater.inflate(R.layout.fragment_layout,null);
String str=(String)getArguments("str");//获得的数据
return view;
}
}