Android中的fragment传值

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);
            }
        });
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值