Fragment的传值分类:
1.Activity向引入Fragment传值
2.Fragment向关联的activity传值
3.同一个 Activity之间的多个Fragment传值
Activity向Fragment传值
Activity:
Fragment f=new Fragment();
Bundle bundle=new Bundle();
bundle.putString(key,value);
bundle.putInt(key,value);
…..
f.setArguments(bundle);Fragment:
Bundle bundle=getArguments();
bundle.getString(key);
bundle.getInt(key);
Fragment向Activity传值:接口回调
Fragment:
public interface CallBack{
public void sendResult(xxx);
}
需要传递数据之前: 实例化CallBack接口的子类 .sendResult(xxx);
//点击按钮时获取EditText中的数据并且传递到引入的Fragment中显示
public void sendValue(View view){
String info=et.getText().toString();//传递的数据
MyFragment fragment=new MyFragment();
Bundle bundle=new Bundle();
bundle.putString("value",info);
fragment.setArguments(bundle);//设置需要存储的数据存储到Bundle对象
manager=getFragmentManager();
FragmentTransaction transaction=manager.beginTransaction();
transaction.replace(R.id.layout_fragment,fragment);
transaction.commit();
}
//获取activity传递的数据并且展示到TextView中
View view=inflater.inflate(R.layout.myfragment,null);
TextView tv= (TextView) view.findViewById(R.id.tv_value);
Bundle bundle=getArguments();//获取actiivty传递的bundle对象
if(bundle!=null){
String info=bundle.getString("value");//根据key取出存储的数据
tv.setText(info);
}
DialogFragment:官方推荐使用此种方法代替Dialog
public class MyDialogFragment extends DialogFragment{
//表示当前的dialog被创建时回调的函数
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder=new AlertDialog.Builder(getActivity());
builder.setIcon(R.mipmap.ic_launcher);
builder.setTitle("提示");
builder.setMessage("您确定要离开吗?");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.setNegativeButton("取消",null);
return builder.create();
}
}
public class MyListFragment extends ListFragment{
private List<String> list;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_list,null);
list=new ArrayList<>();
for(int i=0;i<20;i++){
list.add("item"+i);
}
ArrayAdapter arrayAdapter=new ArrayAdapter(getActivity(),
android.R.layout.simple_list_item_1,list);
setListAdapter(arrayAdapter);
return view;
}
//lv.setOnItemClickListener();
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
Toast.makeText(getActivity(),list.get(position)+"被点击了!",Toast.LENGTH_LONG).show();
}
}
fragment向fragment传值
btn= (Button) view.findViewById(R.id.btn_send);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String info=et.getText().toString();//需要传递的数据
//方式一:fragment管理器对象中根据fragment的id获取对象后调用对象的函数
// RightFragment rightFragment= (RightFragment) getFragmentManager(). //findFragmentById(R.id.right_fragment);
// rightFragment.setText(info);
// 方式二
// TextView tv= (TextView) getFragmentManager().
// findFragmentById(R.id.right_fragment)//获取指定id的fragment对象
// .getView()//获取fragment的view视图 获取右侧onCreateView()返回的view视图
// .findViewById(R.id.tv);
// tv.setText(info);
// 方式三
TextView tv= (TextView) getActivity().findViewById(R.id.tv);
tv.setText(info);
}
});