向Fragment传递数据

Fragment由Activity托管,当启动这个Activity并且想显示Fragment时,几乎都需要向Fragment传递一个或几个数据,而Fragment则根据传递过来的这几个参数显示不同的画面。下面就是介绍如何向Fragment传递数据。

  1. 当不需要传递数据时

Activity类里

        FragmentManager fm=getSupportFragmentManager();
        android.support.v4.app.Fragment sFragment=fm.findFragmentById(R.id.fragmentContainer);
        if(sFragment==null){
        //重点
            sFragment=new SFragment();
            fm.beginTransaction().add(R.id.fragmentContainer, sFragment).commit();
        }
  1. 当需要传递数据时,比如传递字符串“text”给fragment

在fragment的类里给Fragment类创建生成实例的方法,在方法里添加数据

    public static SFragment newInstance(String text){
        Bundle args=new Bundle();
        args.putString("categoryName", text);
        SFragment sFragment=new SFragment();
        sFragment.setArguments(args);
        return sFragment;

    }

在Activity类里通过上面的方法生成实例

        FragmentManager fm=getSupportFragmentManager();
        android.support.v4.app.Fragment sFragment=fm.findFragmentById(R.id.fragmentContainer);
        if(sFragment==null){
        //重点
            sFragment=SFragment().newInstance("text");
            fm.beginTransaction().add(R.id.fragmentContainer, sFragment).commit();
        }

就这样,fragment已经获得了传递过来的数据text.

如果你看懂了上面的代码,你一定会说,根本就没传过来,这样怎么根据传过来的数据显示不同的画面。没错,虽然这时候fragment已经有了text这个数据,可是你还得让这个text显示出来才能发挥作用。

让这个text显示出来

text=getArguments().getString("categoryName");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值