android 开发activity动态传值给fragment时遇到的问题

本文解析了在Android开发中,ViewPager嵌套多个Fragment时,从Activity动态传值到各Fragment的问题及解决方案。作者通过创建接口并确保每个Fragment都有对应的接口实例,实现了正确传值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在做项目中有个需求就是viewpager嵌套fragment,写一个搜索的界面,然后外部的activity 动态传值给里面的fragment,里面用传进来的value值去搜索展示数据,遇到的 问题就是我for循环创建了4个fragment,然后在activity中写了个接口,fragment实现接口接收值,但是4个fragment只有最后一个接收到传过来的值了,其他的都为null,然后就一直不知道问题出在哪里,最后解决了,好了直接上代

1.在activity中循环创建fragment,并绑定viewpager


    /**
     * 循环创建fragment,并绑定viewpager
     */
    private void initVp() {
        for (int i = 0; i < mTitles.length; i++) {
            SearchFragment searchFragment = SearchFragment.getInstance(i);
            stringValueList.add(searchFragment);//接口的数组
            fragmentList.add(searchFragment);//fragment的数组
        }
        searchResultSt.setViewPager(searchResultVp, mTitles, this, (ArrayList<Fragment>) fragmentList);
        isCreate = true;

    }

2.在activity中写接口并在需要传值的时候调用接口传值给fragment


    /**
     * activity传值给fragment的接口
     */
    public interface getStringValue {
        void getString(String value);
    }
           //传值给fragment然后请求数据并展示
            for (int i = 0; i < stringValueList.size(); i++) {
                stringValueList.get(i).getString(mSearchValue);
            }

3.fragment实现接口接收数据


    /**
     * 实现activity动态传值接口
     */
    @Override
    public void getString(String value) {
        mValue = value;
        if (isCreate) {
            LeanCloudApi.searchAllFiledData(mValue, mPosition, 0, this);
        }

好了以上就是我改过后的正确的代码,那么问题出在哪里呢?

解答出现只有最后一个fragment接收到传值的问题原因:原因就是在于我循环是创建了四个fragment,但是我只在activity中写了一个接口,因为activity和fragment是一对一的,现在是一对四,所以就会出现只有最后一个fragment收到了传来的值,解决方法就是在循环创建fragment的时候也一起把接口循环了,然后在使用接口传值的时候循环接口list使用,这样保证了每一个fragment就会对应一个接口,然后在fragment收到的值就会每一个都接收到了,简单的说就是activity和fragment是一对一的,有几个fragment就有几个接口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值