ViewPager+Fragment切换时无法更新数据问题解析(源代码分享)

博客解析了在Android中使用ViewPager与Fragment切换时遇到的数据无法更新的问题。通过定义一个tagList存储数据,然后在Adapter中创建update方法,并利用接口回调机制在主Activity中实现Fragment的数据更新。
摘要由CSDN通过智能技术生成
         在一个 Android 应用中,我们可以使用 FragmentPageAdapter 来处理多 Fragment 页面的横向滑动。但是当 Fragment 对应的数据集发生改变时,我们都希望能够通过调用 mAdapter.notifyDataSetChanged() 来触发 Fragment 页面使用新的数据调整或重新生成其内容,可是当我们使用 notifyDataSetChanged() 后,我们会发现这个方法不会生效。那为什么会这样呢,之前遇到了相同的问题一直没法解决,在网上给出的乱七八糟的答案感觉也不是正解,终于在今早彻底解决了这个问题。我们先来了解下FragmentPagerAdapter的源代码。
    @Override  
    public Object instantiateItem(ViewGroup container, int position) {  
        if (mCurTransaction == null) {  
            mCurTransaction = mFragmentManager.beginTransaction();  
        }  
      
        final long itemId = getItemId(position);  
      
        // Do we already have this fragment?  
        String name = makeFragmentName(container.getId(), itemId);  
        Fragment fragment = mFragmentManager.findFragmentByTag(name);  
        if (fragment != null) {  
            if (DEBUG) Log.v(TAG, "Attaching item #" + itemId + ": f=" + fragment);  
            mCurTransaction.attach(fragment);  
        } else {  
            fragment = getItem(position);  
            if (DEBUG) Log.v(TAG, "Adding item #" + itemId + ": f=" + fragment);  
            mCurTransaction.add(container.getId(), fragment,  
                    makeFragmentName(container.getId(), itemId));  
        }  
        if (fragment != mCurrentPrimaryItem) {  
            fragment.setMenuVisibility(false);  
            fragment.setUserVisibleHint(false);  
        }  
      
        return fragment;  
    }  

      
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值